Chrono Mock
Ngôn ngữTiếng Việt

Chạy ứng dụng Windows ở bất kỳ ngày nào - mà không đụng đến đồng hồ hệ thống

Đặt đồng hồ của một ứng dụng sang năm sau, đóng băng nó, hoặc tăng tốc để bản dùng thử 30 ngày hết hạn trong lúc bạn pha cà phê. Phần còn lại của máy vẫn giữ giờ thật - đăng nhập domain, chứng chỉ của bạn và mọi chương trình khác vẫn chạy bình thường.

Rồi nó cho bạn biết việc thay thế thời gian có thực sự hiệu quả hay không.

Miễn phí và mã nguồn mở, GPL-3.0 Bản di động hoặc cài đặt Chạy không cần quyền quản trị viên Không bao giờ kết nối internet

Một phiên trông như thế nào

Ứng dụng thấy
2027-12-31
23:59:50
múi giờ phiên -05:00
Máy vẫn thấy
2026-09-04
18:12:33
múi giờ máy chủ +02:00
Hoạt động - việc thay thế thời gian đã đến được tiến trình này
Kênh thời gian được theo dõi tối đa 44 · mỗi kênh kèm số lần gọi
Bảng điều khiển phiên của Chrono Mock. Đồng hồ của ứng dụng hiển thị 2038-01-19 03:14:14 và đồng hồ thật bên cạnh hiển thị 2026-09-22 15:50:30, mỗi đồng hồ có thời gian đã trôi riêng. Bên dưới là các tốc độ từ x1 đến x1440 cùng nút Freeze, rồi các bước nhảy tương đối và bước nhảy đến một ngày được nhập, còn ở chân bảng là dấu tích xanh ghi Works cạnh nút Stop session màu đỏ.
Một phiên đang chạy. Ứng dụng đang ở năm 2038, máy thì không, và kết luận cho biết việc thay thế thời gian đã đến được ứng dụng.

Vì sao nó tồn tại

Kiểm thử bất cứ thứ gì phụ thuộc vào ngày tháng đều phải dịch chuyển thời gian. Cả hai cách thông thường đều tệ.

Hạn giấy phép, thời gian dùng thử, gia hạn gói đăng ký, hiệu lực chứng chỉ, tuổi thọ token, báo cáo cuối tháng và cuối năm, tính lãi, lời nhắc.

Cách 1 - đổi đồng hồ hệ thống

Nó làm hỏng đăng nhập domain và Kerberos, vô hiệu hóa chứng chỉ TLS khiến trình duyệt ngừng hoạt động, làm Windows Update rối loạn, và khiến mọi ứng dụng khác trên máy ghi dấu thời gian sai. Trên máy tham gia domain, chính sách nhóm thường chặn thay đổi này hoặc hoàn nguyên sau vài phút, nên bài kiểm thử thậm chí không lặp lại được.

Cách 2 - chờ

Nghĩa là: không kiểm thử. Các trường hợp phụ thuộc vào ngày tháng bị bỏ qua, và “giấy phép không bao giờ hết hạn” đến tay khách hàng.

Nó làm được gì

Một tiến trình di chuyển trong thời gian. Không có gì khác trên máy làm vậy.

Bất kỳ thời điểm nào

Một ngày giờ cụ thể, hoặc một mốc tương đối - +30 days, -1 year.

Trôi, đóng băng hoặc tăng tốc

Tốc độ bình thường, đồng hồ bị giữ nguyên, hoặc hệ số nhân là số nguyên. x1440 biến một ngày thành một phút.

Múi giờ riêng

Một độ lệch cố định chỉ cho tiến trình đó, trong khi múi giờ hệ thống vẫn nguyên chỗ cũ.

Tiến trình con đi theo

Trình cài đặt và trình khởi chạy sinh ra các tiến trình con. Thiếu điều đó, bài kiểm thử chỉ bao phủ một nửa những gì đã chạy.

Nhảy giữa chừng phiên

Tiến hoặc lùi - kể cả bước nhảy lùi mà laptop thực hiện sau khi đồng bộ lại với máy chủ thời gian.

Cả Electron và Chromium

Thông qua một cơ chế khác, vì đồng hồ của chúng nằm trong renderer bị cô lập mà việc chèn mã không với tới.

Phần mà không ai khác làm

Làm sao bạn biết nó đã hiệu quả?

Với mọi công cụ khác, bạn không biết. Ứng dụng khởi động, hiển thị một ngày nào đó, và bạn đoán. Nhưng nó có thể đọc đồng hồ qua một kênh mà công cụ chưa bao giờ chặn - từ máy chủ, từ cơ sở dữ liệu, qua một lớp runtime - và khi đó “bài kiểm thử đã qua” hoàn toàn vô nghĩa.

  • →Một kết luận trước khi bài kiểm thử thật bắt đầu: hoạt động / hoạt động một phần / không hoạt động
  • →Trong 44 kênh thời gian, kênh nào đã được bao phủ, và ứng dụng đã truy vấn mỗi kênh bao nhiêu lần
  • →Kênh nào không được bao phủ - nói thẳng, không bao giờ bỏ sót
  • →Cảnh báo kèm hệ quả: “ứng dụng này đọc giờ từ mạng - việc thay thế cục bộ có thể chưa đủ”

Cách kiểm toán nguồn thời gian hoạt động →

Hai phút làm quen

Một cửa sổ để khám phá, một dòng lệnh cho CI. Cùng một động cơ phía sau cả hai.

# Chạy một ứng dụng như thể đây là giây cuối cùng của năm 2027
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Xem bản dùng thử 30 ngày hết hạn trong lúc bạn pha cà phê: x1440 là một ngày mỗi phút
chrono run "C:\apps\test.exe" --mode x1440

# Dùng một kịch bản có tên thay cho ngày, và ghi bằng chứng ra tệp
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

Máy tính ngày trả lời nửa còn lại của việc kiểm thử ngày tháng - dùng ngày nào:

$ chrono calc --preset year-2038 --zone +00:00
Chrono Mock - date calculator
  preset:   year-2038 - 2038 boundary
  explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)?
  base:    2038-01-19T03:14:07
  result:  2038-01-19T03:14:07
  formats:
    ISO date      2038-01-19
    ISO datetime  2038-01-19T03:14:07+00:00
    US            01/19/2038
    PL            19.01.2038
    epoch (s)     2147483647
    epoch (ms)    2147483647000
    FILETIME      137919572470000000
    RFC 1123      Tue, 19 Jan 2038 03:14:07 GMT
  ...
  what this date lands on:
    at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)

So với thứ bạn có lẽ đang dùng

Giống RunAsDate, cộng thêm những phần còn thiếu

RunAsDate chặn năm hàm đồng hồ treo tường và làm việc đó tốt. Đây là chỗ hai công cụ khác nhau - và trang đầy đủ cũng nói rõ chỗ RunAsDate vẫn là lựa chọn tốt hơn.

 RunAsDateChrono Mock
Chạy một ứng dụng ở ngày giảcócó
Kênh thời gian bị chặn544 (30 được dịch chuyển, 14 chỉ đếm)
Tăng tốc đồng hồkhôngcó
Múi giờ độc lậpkhông có tài liệucó
Theo dõi tiến trình conkhông có tài liệucó
Cho bạn biết có hiệu quả hay khôngkhôngcó, theo từng kênh
Có mã nguồnfreeware, đóngGPL-3.0

So sánh đầy đủ, gồm cả chỗ RunAsDate thắng thế →

Lấy về

Giải nén ở bất kỳ đâu rồi chạy, hoặc cài tệp .msi đã ký cho mọi tài khoản trên máy. Chạy không cần quyền quản trị viên, và các tệp zip không ghi gì vào registry.