簡體   English   中英

如何限制java程序只執行N次

[英]How to restrict a java program to execute only N times

我想制作一個必須只運行特定次數的java程序。 例如2,5,10等之后它必須拋出異常。

不允許為此使用任何FILE或數據庫。 有人給了我一些REGISTRY的暗示! 但我不知道如何使用它。 請幫幫我這方面......

這個問題是否可解決取決於“任何文件或數據庫”的含義。

  • 根據您的觀點,Windows注冊表是一種文件/數據庫。 當然,值重新啟動時值保留在注冊表中的唯一原因是因為注冊表更改被寫入光盤。

  • 您可以將狀態(例如應用程序運行次數的計數)移動到本地計算機上的某個其他服務。 但是再一次,除非服務將該狀態保存到光盤(或其他一些穩定的存儲介質),否則它將丟失,因為本地機器重新啟動。

  • 您可以將狀態移動到遠程計算機上的服務,但如果沒有保存到光盤等,它可能會再次丟失。此外,您可能無法在需要該狀態時聯系該遠程服務; 例如,在啟動應用程序時。

  • 您可以將狀態復制到許多沒有光盤的遠程服務,但網絡故障(或用戶從網絡中拔出)將阻止您訪問該狀態。

總而言之,如果您無法在本地寫入光盤(或nvram,磁帶等),則無法保證計數器不會被重置,並且在需要時它將可用。 因此,您無法保證應用程序的運行次數不會超過允許的次數。


我想你正試圖想出一些用戶不能顛覆的有限使用方案; 例如,通過從文件/數據庫/任何計數器刪除東西。 遺憾的是,除非您實際控制應用程序運行的硬件和操作系統,否則您無法阻止某人破壞存儲在計算機上的任何計數器。 擁有“root”或完全管理員權限或具有物理訪問權限的任何人都可以最終更改計算機本身的任何數據。

您可以做的最好的事情是建立與遠程服務器的安全連接,並使用它來保存使用計數器。 但即使這樣也是徒勞的,因為有動力的人可以對應用程序的關鍵部分進行逆向工程並禁用檢查計數器的代碼。

如果應用程序。 有一個GUI,它可以使用Java Web Start啟動並使用PersistenceService。 這是一個小型演示。 PersistenceService 該代碼可供下載。

編輯:PersistenceService應該適用於任何具有JRE的計算機,而不僅僅是Windows。

雖然這聽起來像是嘗試復制保護,但您可能需要考慮自我修改代碼。 這里有一個關於這個主題的有趣討論:Java中的自修改代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM