Chrono Mock
BahasaBahasa Indonesia

Alternatif RunAsDate, dengan bagian yang tadinya tidak ada

RunAsDate sudah bertahun-tahun menjadi jawaban untuk “jalankan program ini pada tanggal yang berbeda di Windows”, dan ia jawaban yang bagus. Halaman ini membahas di mana keduanya berbeda, dan di mana RunAsDate tetap menjadi pilihan yang lebih baik.

Berdampingan

 RunAsDateChrono Mock
Menjalankan satu aplikasi pada tanggal palsuyaya
Tidak menyentuh jam sistemyaya
Fungsi waktu yang dicegat544 (30 digeser, 14 dihitung)
Jam lebih cepat dari waktu nyatatidak ditawarkanpengali bilangan bulat apa pun
Membekukan jamya, secara bawaanya
Melompat saat aplikasi berjalanhanya kembali ke tanggal sebenarnya, setelah jumlah detik yang ditentukanmaju dan mundur, ke momen mana pun
Zona waktu hanya untuk proses itutidak terdokumentasiya, selisih tetap
Proses anak mewarisi sesitidak terdokumentasiya
Menempel ke aplikasi yang sudah berjalanya, sejak versi 1.40tidak - ia menjalankan aplikasinya sendiri
Beberapa aplikasi dengan tanggal berbeda sekaligusyatidak - satu sesi dalam satu waktu
Memberi tahu apakah berhasiltidakputusan, per kanal, dengan jumlah panggilan
Aplikasi Electron dan Chromiumtidak terdokumentasimekanisme terpisah
Baris perintah untuk CIyaya, dengan kode keluar dan JSON
Kode sumberfreeware, tertutupGPL-3.0
Ukuranunduhan 47 KB, 57 KB untuk 64-bit~2,4 MB baris perintah, ~70 MB dengan jendela
Versi Windows lamasampai Windows 2000Windows 10 dan 11

“Tidak terdokumentasi” berarti fitur itu tidak disebutkan di halaman RunAsDate. Itu bukan klaim bahwa alatnya tidak memilikinya. Jam RunAsDate diam kecuali opsinya Move the time forward according to the real time diaktifkan.

Perbedaan yang paling penting

Bukan jumlah kanalnya. Melainkan bahwa RunAsDate, dalam dokumentasinya sendiri, dengan jujur menyatakan bahwa ia “tidak akan memengaruhi aplikasi yang mengambil tanggal/waktu saat ini dari sumber lain” - lalu membiarkan Anda mencari tahu sendiri apakah aplikasi Anda salah satunya.

Chrono Mock memperlakukan kalimat yang sama itu sebagai sesuatu yang diukur. Setiap sesi berakhir dengan putusan, kanal yang benar-benar dibaca aplikasi beserta hitungan untuk masing-masing, kanal yang terlewat, dan peringatan ketika aplikasi terlihat membuka koneksi jaringan sebelum sempat menanyakan jam.

Aplikasi yang tampak bergeser waktunya padahal tidak lebih buruk daripada yang tidak pernah diluncurkan - ia menghasilkan pengujian lulus yang tidak berarti apa-apa. Cara kerja audit →

Lima fungsi, atau 44 kanal

RunAsDate mencegat GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime, dan GetSystemTimePreciseAsFileTime. Untuk sangat banyak aplikasi itu benar-benar cukup, karena di sanalah jam dinding dibaca.

Sisa permukaannya adalah tempat kode yang bergantung pada tanggal cenderung bersembunyi:

  • zona waktu - dua fungsi yang melaporkannya, ditambah enam fungsi yang mengonversi antarzona, yang membuat laporan jatuh di hari yang salah
  • sumbu waktu berlalu - hitungan tick dan interrupt time tanpa bias, yang biasanya diukur oleh hitung mundur masa percobaan
  • jeda tidur, agar penundaan menjadi penundaan pada jam sesi dan bukan pada jam sebenarnya, serta penantian objek, yang dihitung dan tetap pada durasi sebenarnya
  • timer - waitable, jendela, thread-pool, dan multimedia
  • pembuatan proses, sehingga proses anak installer berjalan di sesi yang sama, bukan di hari ini
  • koneksi jaringan, dihitung sebagai tanda bahwa waktu mungkin berasal dari server

Dari 44 kanal, 30 dipindahkan ke jam sesi. Sisanya (14) hanya dihitung dan tetap nyata, sehingga laporan mencantumkannya tanpa mengklaim bahwa kanal itu digeser. Jam dinding dan zona waktu digeser di setiap sesi. Sumbu waktu berlalu dan penantian dipantau saat Anda memintanya dengan --scale-duration, dan penghitung resolusi tinggi dengan --scale-qpc.

Kapan RunAsDate adalah pilihan yang lebih baik

Sungguh-sungguh, dan tidak jarang:

  • Anda hanya perlu satu tanggal, pada kecepatan normal, sekarang juga. RunAsDate adalah unduhan di bawah 60 KB, tidak punya jendela yang perlu dipelajari, dan sudah melakukan persis ini selama bertahun-tahun.
  • Anda memakai Windows yang lebih lama. RunAsDate menjangkau sampai Windows 2000. Alat ini menargetkan Windows 10 dan 11 dan tidak diuji di versi yang lebih lama.
  • Ukuran itu penting. Unduhan 47 KB dibanding ~2,4 MB untuk baris perintah, atau ~70 MB dengan jendela, bukan perbandingan yang ketat.
  • Anda tidak menginginkan putusan. Mengukur cakupan berarti membaca hasilnya. Jika pengujiannya sekali pakai, itu beban yang tidak Anda minta.
  • Aplikasinya sudah berjalan. Sejak versi 1.40 RunAsDate bisa menempel ke proses yang sedang berjalan. Chrono Mock menjalankan aplikasinya sendiri, jadi aplikasi yang tidak bisa dijalankan ulang berada di luar jangkauannya.
  • Anda ingin beberapa aplikasi dengan tanggal berbeda sekaligus. RunAsDate memberi masing-masing tanggalnya sendiri. Chrono Mock menjalankan satu sesi dalam satu waktu.

Keduanya juga dapat hidup berdampingan. Tidak ada yang menghalangi Anda mempertahankan RunAsDate untuk kasus cepat.

Untuk apa keduanya tidak dibuat

Kedua alat muncul dalam pencarian tentang memperpanjang masa percobaan. Alat ini tidak dibuat untuk itu, dan tidak ada contoh, skenario, atau halaman di sini yang akan pernah mendemonstrasikannya. Chrono Mock untuk menguji perangkat lunak yang menjadi tanggung jawab Anda - masa berlaku lisensi Anda sendiri, logika perpanjangan Anda sendiri, laporan akhir bulan Anda sendiri.

Itu juga kasus yang paling kecil kemungkinannya berhasil. Perlindungan lisensi rutin membaca waktu lewat jalur yang dipilih agar sulit dicegat - halaman data bersama mode pengguna, system call langsung, sebuah server - dan jam yang bergerak mundur adalah kondisi yang ditulis untuk dideteksi kode semacam itu. Audit akan memberi tahu bahwa ia tidak berhasil, yang merupakan jawaban jujur, bukan jawaban yang berguna.

Cobalah