2010-11-03 142 views
1

我有我寫的C#應用​​程序。除了一種方法之外,一切都可以工作如果UAC打開,我無法保存文件,甚至沒有Settings.config文件。我嘗試使用清單文件,沒有運氣。我究竟做錯了什麼?C#權限保存文件

public static void UpdateVersionText() 
{ 
    var wc = new WebClient(); 
    var utf8 = new UTF8Encoding(); 
    var list = utf8.GetString(wc.DownloadData("https://www.agentsarea.co.uk/photolibrary/photos/data/version.txt")); 
    wc.Dispose(); 
    Properties.Settings.Default.version = list.Trim(); 
    Properties.Settings.Default.Save(); 
} 
+0

你能否提供異常堆棧跟蹤來檢查? – 2010-11-03 17:38:37

+0

沒有例外。所有東西都在沒有UAC的機器上編譯和運行。在全新安裝的Vista或帶有UAC的WIn7上,永遠不會保存設置。 – 2010-11-03 17:40:21

+0

我不認爲有必要downvote這個問題。這是一個非常有效的問題。讓他從來沒有試圖將文件保存到\ Program files \目錄的人投下第一個downvote。 – 2010-11-03 17:49:23

回答

6

將文件保存到一個更好的地方。您可能正在保存到當前目錄,該目錄位於/ Program files /中,這是普通用戶不應寫入的目錄。嘗試保存到%appdata%(每個Windows用戶都有自己的目錄)或%allusersprofile%(所有用戶共享相同的目錄)。

AppData的當前用戶:

您可以通過調用以下獲得任意路徑

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

所有用戶配置文件目錄:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 
+0

非常感謝!這是我的問題之一,試圖保存到Program Files目錄。我的另一個問題是愚蠢。我從來沒有真正調用我的保存方法。我感到非常愚蠢。 – 2010-11-03 18:20:48

+0

@Dremation:大聲笑,這將避免例外,但:-)。我們都去過那裏,所以不要覺得自己很愚蠢。 – 2010-11-03 18:21:57

0

你在哪裏試圖把它保存到文件系統?如果您正在嘗試使用Program Files,您將被UAC關閉。嘗試AppData或我的文檔區域,你應該有更多的運氣。

+0

最初我試圖保存到Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)+「\\ PPPL \\ Data \\ version.txt」但是失敗了,所以我嘗試保存到應用程序設置文件。 – 2010-11-03 17:42:15

+0

@Dremation:CommonProgramFiles也需要提升......停止嘗試將它保存在Windows想要保護可執行文件的位置......當您嘗試用戶可訪問的路徑時,您應該沒問題 – 2010-11-03 17:44:40

+0

我試圖保存到C:\ Users \ Dremation \ AppData \漫遊\ PPPL \數據沒有運氣。解決方案文件包含2個項目。 1將數據保存到一個sqlite數據庫,在同一個目錄中沒有問題。但第二個應用程序無法保存。 – 2010-11-03 18:01:30