2011-11-16 61 views
3

我有一個需要創建文本日誌的程序。在XP中,一切正常,但當我在Windows 7上測試它 - 後來升級到我的開發計算機的Windows 7 - 我得到一個錯誤,「訪問路徑'C:\ Program Files文件(x86)\ Ludlum測量,Inc \ LMI通用軟件\ UniversalLog \'被拒絕「。如果我有安裝程序創建文件夾,然後嘗試在文件夾中創建文本文件,我會得到類似的錯誤。在Windows 7中創建目錄和文本文件時出現UAC問題

我知道這與權限有關,但我應該給予什麼權限以及如何?

使用日誌功能的程序?

日誌進入的文件夾?

程序所在的文件夾?

而如何將XP,Vista中,服務器2005和Server 2008和作爲服務下此修復工作(部分程序作爲Windows窗體運行,並且一部分作爲服務)?

-Edit- 強調增加了。

重申:如何在XP上安裝並運行時工作?一臺Server 2003?一個Server 2008?這會對他們造成什麼問題嗎?

還有一個新問題:我的程序能否從ApplicationData文件訪問文件?我只記得我的所有問題都來自於我試圖創建一個保存SQL數據庫連接信息的配置文件。將頭靠在磚牆上呆了一天往往會讓你忘記爲什麼你開始做這件事。再次,這個原本在XP,Server 2005中,和服務器工作2008

回答

4

您應該使用Environment.GetFolderPat^h,並挑選具有寫權限的Environment.SpecialFolder文件夾時,UAC是在寫你的日誌文件那裏。

默認情況下在UAC下,您無權寫入C:\ Program Files或其子文件夾。

Environment.ApplicationData通常是一個不錯的選擇,這將是寫在默認情況下在XP,Vista中,Server 2005和Server 2008中,除非管理員已鎖定下來的東西太多

Teach Your Apps To Play Nicely With Windows Vista User Account Control是一個很好的關於如何編寫在UAC下運行良好的應用程序的資源

+0

你回答我的問題,但我不知道,當我有程序運行的服務的一部分,而不有人登錄可能會發生什麼事情。它看起來像我只好滾骰子並嘗試它。 – Tory

4

安裝後,除非實際修補應用程序,否則不應將任何內容寫入Program Files目錄。日常使用文件應該放入應用程序數據文件夾(用於非漫遊數據的LocalApplicationData和用於漫遊數據的ApplicationData)。

string path = Environment.GetFolderPath(
    EnvironmentFolders.SpecialFolders.LocalApplicationData) 

http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

相關問題