Hỏi và đáp
Các câu trả lời ngắn, kể cả những câu về điều công cụ này sẽ không làm.
Nó có đổi đồng hồ máy tính của tôi không?
Không, và sẽ không bao giờ - đó là toàn bộ mục đích của công cụ. Giờ bị dịch chuyển chỉ hiển thị với một tiến trình và các tiến trình con mà nó khởi chạy. Đăng nhập domain, chứng chỉ, Windows Update và mọi ứng dụng khác vẫn thấy ngày thật suốt thời gian đó.
Tôi có cần quyền quản trị viên không?
Không cần để chạy. Các tệp zip không cần trình cài đặt, không ghi gì vào registry và chạy từ
một thư mục bạn có thể mang theo trên USB. Tệp .msi tùy chọn cần quyền quản trị
viên một lần, để cài đặt, vì nó cài cho mọi tài khoản trên máy.
Nó có hoạt động với ứng dụng của tôi không?
Câu trả lời trung thực là không công cụ nào thuộc loại này có thể hứa trước - nên công cụ này đo nó. Mỗi phiên kết thúc bằng một kết luận (hoạt động, hoạt động một phần, không hoạt động), danh sách các kênh thời gian mà ứng dụng thực sự đã đọc kèm số lần gọi của từng kênh, và danh sách các kênh không được bao phủ.
Một ứng dụng có thể đọc đồng hồ qua một đường mà không gì chặn được - từ máy chủ, từ cơ sở dữ liệu, qua một lớp runtime. Khi điều đó xảy ra, bạn được cho biết, thay vì bị để mặc cho rằng bài kiểm thử đã qua.
Nó có hoạt động với ứng dụng .NET, Java và Python không?
Một phần, và những khác biệt là quan trọng. Cả ba đều được đánh dấu thử nghiệm: chúng hoạt động trên các mục tiêu kiểm thử, chưa được kiểm thử rộng rãi, và kiểm toán tích hợp sẵn là nguồn chân lý của bạn chứ không phải đoạn này.
- .NET - đồng hồ treo tường và múi giờ của phiên được bao phủ.
Stopwatchvẫn ở bộ đếm độ phân giải cao thật, trừ khi bạn chọn bật nhân tỷ lệ nó. - Java - đồng hồ treo tường, thời gian đã trôi và múi giờ của phiên được bao phủ.
Múi giờ đến dưới dạng một độ lệch cố định, được đặt tên như
GMT+05:30. - Python -
time.timevàdatetimeđược bao phủ.perf_counter, vàmonotonictrên Python 3.13 trở lên, nằm trên bộ đếm độ phân giải cao, trừ khi bạn chọn bật.
Nó có hoạt động với ứng dụng Electron và Chromium không?
Có, qua một cơ chế khác. Đồ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, nên ứng dụng được khởi chạy với một cổng gỡ lỗi và một hồ sơ sạch dùng một lần, và các API thời gian JavaScript của chính nó được đặt lên đồng hồ phiên - kể cả bên trong các Web Worker, nơi bộ hẹn giờ thường thực sự nằm.
Một giới hạn đáng biết: tiến trình chính của ứng dụng Electron chạy trong Node mà phiên không với tới, nên nó giữ đồng hồ thật, và báo cáo có nói điều này. Các trang và worker của chúng đọc múi giờ của phiên.
Chế độ Chromium và Electron hoạt động thế nào - nó với tới đâu, không với tới đâu, và vì sao cổng gỡ lỗi là phần cần lưu ý.
Tôi có thể làm thời gian chạy nhanh hơn thời gian thật không?
Có. Chọn một hệ số nhân là số nguyên và đồng hồ của ứng dụng chạy ở tốc độ đó - x1440
biến một ngày thành một phút, nên bản dùng thử 30 ngày hết hạn trong khoảng nửa giờ. Bạn cũng có thể
đóng băng đồng hồ, hoặc nhảy tới và lui giữa phiên.
Bộ đếm ngược và bộ hẹn giờ nằm trên một trục riêng, và việc tăng tốc chúng là một công tắc riêng, vì nhân tỷ lệ chúng làm thay đổi hành vi mà rất nhiều ứng dụng phụ thuộc vào.
Tôi có thể chỉ đổi múi giờ mà không đổi ngày không?
Có. Phiên mang độ lệch cố định riêng của nó, hiển thị với tiến trình đó trong khi múi giờ hệ thống vẫn nguyên chỗ cũ. Đây là phần mà đa số công cụ bỏ qua, và là cách để tái hiện lỗi chỉ xuất hiện với khách hàng ở cách đó năm múi giờ.
Còn giờ mùa hè thì sao?
Múi giờ của phiên là một độ lệch cố định không có giờ mùa hè. Một phiên đặt theo Ba Lan giữ nguyên độ lệch bạn chọn dù đồng hồ của nó chỉ tháng Ba hay tháng Bảy, nên một lần chạy vượt qua lần chuyển giờ thật sẽ lệch một giờ so với những gì múi giờ đó thực sự hiển thị.
Do đó ép một ứng dụng đi qua một lần chuyển giờ mùa hè chưa phải thứ công cụ này làm được, và máy tính ngày nói rõ điều đó thay vì đoán.
Vì sao phần mềm diệt virus của tôi cảnh báo nó?
Vì chèn một thư viện vào tiến trình khác là một kỹ thuật Windows hợp pháp, có tài liệu, mà mã độc
cũng dùng. Đó là một cảnh báo giả do chính kỹ thuật gây ra, không phải do bất cứ điều gì công cụ làm
với máy của bạn. Thư viện được chèn là chrono_hook.dll, được dựng từ mã nguồn công khai
theo GPL-3.0, và bạn có thể tự dựng lại. Chế độ Chromium và Electron hoàn toàn không chèn mã.
Trang tải về nói nên làm gì trong trường hợp đó.
Đây có phải cách để gia hạn bản dùng thử hay vượt qua giấy phép không?
Không, và nó không được xây dựng cho việc đó. Chrono Mock dành để kiểm thử phần mềm mà bạn chịu trách nhiệm - hạn giấy phép của chính bạn, logic gia hạn của chính bạn, báo cáo cuối tháng của chính bạn. Không ví dụ, kịch bản hay trang nào ở đây sẽ từng minh họa việc gia hạn thời gian dùng thử của người khác.
Phần mềm có bảo vệ bản quyền thực ra là trường hợp có nhiều khả năng đánh bại công cụ này nhất: mã chống can thiệp thường đọc giờ qua những đường được chọn có chủ ý để khó chặn, và tua đồng hồ lùi là điều kiện mà phần mềm như vậy được viết ra để phát hiện. Một tính năng theo hướng ngược lại đang được lên kế hoạch - một chế độ chạy một loạt thao tác về thời gian nhằm vào ứng dụng của chính bạn và báo cáo thao tác nào đã bị lớp bảo vệ của bạn bắt được.
Tôi có thể dùng nó trong tích hợp liên tục không?
Có. Bản dựng dòng lệnh là một bản tải riêng khoảng 2,4 MB, không cần cài runtime. Mọi lệnh đều nói
được --json và thoát với một mã mà pipeline có thể rẽ nhánh theo, và một phiên có thể ghi
bằng chứng của nó ra tệp.
Nó khác RunAsDate ở điểm nào?
RunAsDate chặn năm hàm đồng hồ treo tường và làm việc đó tốt. Công cụ này theo dõi 44 kênh thời gian và đưa 30 kênh trong số đó lên đồng hồ phiên, có thể tăng tốc đồng hồ, cho tiến trình múi giờ riêng, đi theo các tiến trình con và cho bạn biết sau đó kênh nào thực sự được bao phủ. Nó cũng là mã nguồn mở, trong khi RunAsDate là phần mềm miễn phí đóng. Ngược lại, RunAsDate có thể gắn vào một ứng dụng đang chạy, còn công cụ này thì không.
So sánh đầy đủ cũng nói rõ chỗ RunAsDate là lựa chọn tốt hơn.
Đây có phải libfaketime cho Windows không?
Về tinh thần thì có - cùng ý tưởng dịch chuyển thời gian cho một chương trình thay vì cho cả máy.
Trên thực tế đó là một cách triển khai khác, vì
libfaketime phụ thuộc vào
LD_PRELOAD, thứ không tồn tại trên Windows. Có
một trang nói đúng về điều đó.
Nó miễn phí không, và có gửi gì đi đâu không?
Miễn phí và mã nguồn mở theo GPL-3.0. Không cần tài khoản, không telemetry, và nó hoàn toàn không kết nối internet - toàn bộ công cụ chạy được ngay cả khi rút dây mạng.
Cửa sổ có hai điều khiển dẫn ra bên ngoài, nên đáng nêu tên thay vì để bạn tự phát hiện: nút Donate và nút GitHub trên thanh tiêu đề. Nhấn vào một trong hai nút sẽ chuyển một địa chỉ cho trình duyệt của bạn, và trình duyệt mới là thứ kết nối. Chrono Mock không mở kết nối nào trong cả hai trường hợp, và không gì nó đo được về ứng dụng của bạn được gửi đi đâu cả.