我在VB.Net中創建了一個包含30天試用期的程序。該程序在註冊表中保存了該程序首次啓動的時間,並且時間也是最後一次使用。從那我計算,如果審判仍然有效。存儲程序註冊信息的地方
問題是,註冊表中唯一一個非管理員用戶可以訪問的地方是HKEY_LOCAL_USER鍵。我需要爲所有用戶實施試用版,否則用戶可以使用新帳戶並重置試用版。
我在哪裏可以保存此信息,以便沒有管理員權限的用戶可以從該位置讀取和寫入?我也想將它保存在一般用戶找不到的地方,並刪除重置試用版的文件。
謝謝
我在VB.Net中創建了一個包含30天試用期的程序。該程序在註冊表中保存了該程序首次啓動的時間,並且時間也是最後一次使用。從那我計算,如果審判仍然有效。存儲程序註冊信息的地方
問題是,註冊表中唯一一個非管理員用戶可以訪問的地方是HKEY_LOCAL_USER鍵。我需要爲所有用戶實施試用版,否則用戶可以使用新帳戶並重置試用版。
我在哪裏可以保存此信息,以便沒有管理員權限的用戶可以從該位置讀取和寫入?我也想將它保存在一般用戶找不到的地方,並刪除重置試用版的文件。
謝謝
我的問題實際上是保存所有用戶可以訪問(讀寫)數據的地方。
在Win 7中,這可能會變得棘手。我在代碼項目中找到this文章,解釋瞭如何實現文件夾。
然後,我讀取一個文件,並按照上面Kenny的建議將值保存在註冊表中。
如果有人有更好的方法,請分享它。
我不確定任何人都可以爲此找到明確的答案。唯一的方法是將數據與您而不是客戶端存儲在一起 - 所以在安裝時以及在每次啓動時進行網絡調用,並將數據存儲在服務器上。
其中,除非你有一個特別嚴重的問題,是非常OTT。
簡言之,在安裝目錄中加密並保存文件中的信息。加密它應該確保值不能被改變,並且如果文件不存在,那麼不要允許訪問。
但這一切都取決於試用期的重要性。
安裝目錄是Program files,如果用戶沒有管理權限,他將無法在那裏保存數據。正如我上面所說的,我需要一個非管理員用戶可以保存可以被PC的所有用戶訪問的文件的地方。是的,進行網絡電話不是我的選擇。 – Johan
@Johan - 他必須能夠寫入該文件夾,否則他將無法首先安裝程序。只要您將日期設置爲安裝過程的一部分,就沒問題。 –
管理員可能已經安裝了該應用程序。所以這不是一個選項。你可以用c:\?通常不是一個好主意,但它應該是可訪問的,並且有一點寶貴的知識可以訪問。 –
以二進制形式保存所需的數據(DateTime.Now.Ticks
爲System.Int64
;))並用冗餘數據對其進行膨脹並生成校驗和字段。在負載檢查校驗和字段,如果它是錯誤的 - 數據已被篡改,所以殺死試用期。您還可以將數據保存在應用程序旁邊的文件中,以避免使用註冊表(兼顧跨平臺兼容性和避免所需的管理權限)
HKEY_LOCAL_MACHINE適用於所有用戶,但安裝應用程序的用戶必須具有管理員特權。
用戶也可以簡單地刪除該值。這比使用新帳戶更容易。 – CodesInChaos
如何將數據存儲在HKEY_LOCAL_USER和應用程序數據目錄中的文件中?如果它已經在文件中,當應用程序開始複製到HKEY_LOCAL_USER。 – kenny
我只是想將它保存在普通人無法找到的地方。我知道如果他真的想要阻止用戶免費使用該程序是不可能的。我的程序的普通用戶將無法從註冊表中刪除密鑰。那麼,您建議什麼是保存所有用戶(管理員和非管理員)可用數據的最佳位置,並且不容易找到 – Johan