2011-07-06 27 views
5

Tôi đã tạo một chương trình có thời gian dùng thử 30 ngày trong VB.Net. Chương trình tiết kiệm thời gian trong registry mà chương trình được khởi chạy lần đầu tiên và cũng là thời gian được sử dụng cuối cùng. Từ đó tôi tính toán nếu thử nghiệm vẫn còn hiệu lực.nơi lưu trữ thông tin đăng ký chương trình

Vấn đề là, nơi duy nhất trong sổ đăng ký mà người dùng không phải quản trị viên có thể truy cập là khóa HKEY_LOCAL_USER. Tôi cần triển khai bản dùng thử cho tất cả người dùng, nếu không, người dùng chỉ có thể sử dụng tài khoản mới và có thể đặt lại bản dùng thử.

Tôi có thể lưu thông tin này ở đâu để người dùng không có quyền quản trị có thể đọc và viết từ vị trí đó? Tôi cũng muốn lưu nó ở một nơi mà người dùng trung bình không thể tìm thấy quá dễ dàng và xóa tệp sẽ đặt lại bản dùng thử.

Cảm ơn

+0

Một người dùng cũng có thể chỉ cần xóa giá trị. Đó là dễ dàng hơn bằng cách sử dụng một tài khoản mới. – CodesInChaos

+1

cách lưu trữ dữ liệu trong cả HKEY_LOCAL_USER và trong một tệp trong thư mục dữ liệu ứng dụng? Nếu nó đã có trong tập tin, khi ứng dụng bắt đầu sao chép vào HKEY_LOCAL_USER. – kenny

+0

Tôi chỉ muốn lưu nó ở một nơi mà các chàng trai trung bình sẽ không thể tìm thấy. Tôi biết không thể ngăn người dùng sử dụng chương trình miễn phí nếu anh ta thực sự muốn. Người dùng trung bình của chương trình của tôi sẽ không thể xóa khóa khỏi sổ đăng ký. Vì vậy, những gì bạn đề nghị là nơi tốt nhất để lưu dữ liệu này có sẵn cho tất cả người dùng (admin và không quản trị), và không phải là dễ dàng để tìm thấy – Johan

Trả lời

0

Vấn đề của tôi thực sự là nơi lưu dữ liệu mà tất cả người dùng đều có thể truy cập (đọc và ghi).

Trong Win 7 điều này có thể trở nên phức tạp. Tôi đã tìm thấy this bài viết về dự án mã giải thích cách thức này có thể đạt được đối với các thư mục.

Sau đó tôi đọc tệp và lưu các giá trị trong sổ đăng ký theo đề xuất của Kenny ở trên.

Nếu ai đó có phương pháp tốt hơn, vui lòng chia sẻ.

1

Tôi không chắc ai đã tìm thấy câu trả lời dứt khoát cho việc này. Cách duy nhất là để lưu trữ dữ liệu với bạn và không phải với khách hàng - do đó, làm một cuộc gọi web trên cài đặt, và trên mỗi khởi động, và lưu trữ dữ liệu trên máy chủ của bạn.

Mà, trừ khi bạn có một vấn đề đặc biệt nghiêm trọng, là rất OTT.

Ngắn gọn, mã hóa và lưu thông tin trên một tệp trong thư mục cài đặt. Mã hóa nó phải đảm bảo rằng giá trị không thể thay đổi và nếu tệp không tồn tại thì không cho phép truy cập.

Nhưng tất cả phụ thuộc vào thời gian thử nghiệm quan trọng như thế nào.

+0

Thư mục cài đặt là các tệp chương trình và nếu người dùng không có quyền quản trị, anh ấy sẽ không thể lưu dữ liệu ở đó. Như tôi đã nói ở trên, tôi cần một nơi mà người dùng không quản trị có thể lưu các tệp có thể được tất cả người dùng PC truy cập. Và có, thực hiện một cuộc gọi web không phải là một lựa chọn cho tôi. – Johan

+0

@Johan - Anh ấy phải có khả năng ghi vào thư mục đó, hoặc anh ấy sẽ không thể cài đặt chương trình của bạn ngay từ đầu. Miễn là bạn thiết lập ngày như là một phần của quá trình cài đặt, bạn vẫn ổn. –

+0

Quản trị viên có thể đã cài đặt ứng dụng. Vì vậy, đó không phải là một lựa chọn. Bạn có thể sử dụng c: \? Nói chung không phải là một ý tưởng tốt, nhưng nó phải có thể truy cập được, và có chút quý giá mà bạn biết shoudl có thể truy cập được. –

1

Lưu dữ liệu cần thiết theo dạng nhị phân (DateTime.Now.TicksSystem.Int64;)) và tăng cấp dữ liệu đó bằng dữ liệu dư thừa và tạo trường kiểm tra. Khi tải kiểm tra lĩnh vực kiểm tra và nếu nó là sai-dữ liệu đã bị giả mạo để giết thời gian dùng thử. Bạn cũng có thể lưu dữ liệu trong một tệp bên cạnh ứng dụng của mình để tránh sử dụng sổ đăng ký (cả về khả năng tương thích đa nền tảng và tránh các đặc quyền quản trị bắt buộc)

HKEY_LOCAL_MACHINE là dành cho tất cả người dùng nhưng người dùng cài đặt ứng dụng của bạn phải có quản trị viên đặc quyền.

Các vấn đề liên quan