2010-01-23 47 views
2

我目前有一個編譯的C#程序,但每當我運行它,我得到Windows遇到問題的錯誤。System.UnauthorizedAccess異常C#

這是從一個System.UnauthorizedAccess錯誤,我怎麼可以給訪問和刪除這個錯誤,而不需要從用戶端,因爲這個程序被部署到很多人,我不希望他們必須手動進行此修復。

謝謝

+3

你能給我多一點信息嗎?你有異常的文本,或者是導致它的代碼行嗎? – 2010-01-23 23:42:12

+1

我想我們需要知道你的應用程序在做什麼,才能找到解決方案。但如果其他答案是您在這種情況下尋找的,UAC將成爲您的問題,並且寫入更易訪問的文件夾是您的解決方案。 – caesay 2010-01-24 21:52:31

回答

1

您可以使用環境變量APPDATA獲取當前用戶的應用程序數據文件夾。因此,您可以執行如下操作:

string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
string configFile = Path.Combine(appdata, configFile); 
StreamWriter writer = new StreamWriter(configFile); 
writer.WriteLine("my config data"); 
writer.Close(); 

您也可以使用此方法獲取臨時文件夾。您甚至可以使用BCL函數生成一個隨機文件名。我認爲它是Path.GetTempFilename()

0

您的應用程序是否隨時要求管理員權限?

+0

是的,它確實要求管理員權限,我的很多用戶在打開應用程序時發現它發生了。如果應用程序在啓動時沒有找到配置文件,那麼它會創建它,因此在程序文件環境中創建它可能會遇到問題。 – 2010-01-23 23:50:37

+0

那是你的問題。在UAC下,您無法在不升級的情況下在Program Files中創建文件。無論如何,你也不應該這樣做,有更好的地方來保持全球環境。 – blowdart 2010-01-23 23:57:50

+0

好吧,那麼,我怎麼會把配置文件像appdata一樣體面? – 2010-01-24 00:16:50