2017-09-23 54 views
1

我的VB.NET應用程序需要在本地機器中存儲文本文件。每次應用程序啓動時,都需要將信息寫入該文本文件,而不管機器中的任何用戶。哪裏可以放置普通用戶數據而沒有管理權限?

1)註冊表無法使用。用戶無權寫入HKEY_LOCAL_MACHINE \ Software。 HKEY_CURRENT_USER \ Software不是首選,因爲用戶第一次打開應用程序時需要提供許可證解鎖密鑰。我只想讓許可證解鎖密鑰在任何用戶安裝後提供一次。許可證解鎖密鑰將寫入文本文件。

2)我試過Environment.SpecialFolder.CommonApplicationData並創建了一個文件夾來存儲文本文件。當管理員安裝它並且管理員可以打開應用程序時,它運行良好。一旦用戶在同一臺​​機器上登錄,應用程序管理顯示啓動畫面,但它停止工作。沒有錯誤消息出現,並且它在任務管理器的詳細信息選項卡中消失。我仍然可以在Environment.SpecialFolder.CommonApplicationData中看到文本文件。

3)我檢查過other question之前與此問題有關。其中一條評論建議隔離存儲。但是,當我使用獨立存儲時,我不確定是否會得到與上面(2)相同的結果。

問題:

1)應該在哪裏許可文件被存儲在本地的機器,這是通用於所有用戶,所有用戶應該寫,讀權限許可文件?

+0

如果許可證密鑰在安裝時被寫出(具有管理權限),任何用戶都應該能夠從CommonApplicationData中*讀*而沒有問題。或者,您可以將它保存到公用文件夾,因爲刪除它不符合他們的利益 – Plutonix

+0

'CommonApplicationData'是正確的地方,雖然您可以在第一次創建文件時更改權限,但您不應該將文件世界可寫,除非你真的需要。您可能只需修復導致應用程序崩潰的錯誤,最可能的原因是在打開文件時無意中請求寫入訪問。 –

+0

@HarryJohnston,應用程序必須在啓動時寫入文本文件。那麼,當任何用戶登錄並啓動我的應用程序時,CommonApplicationData是我的應用程序讀取和寫入文本文件的正確位置? – hunterex

回答

0

拋開其他的考慮,CommonApplicationData仍然是這個文件的正確位置。

當您的安裝程序最初創建文件時,have it set permissions允許INTERACTIVE向其寫入。理想情況下,您只應授予FILE_GENERIC_WRITE權限,以便非管理員用戶無法再刪除該文件或更改權限。

相關問題