我用下面的代碼來構建期望的路徑爲XML文件:一致的ApplicationData路徑
System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
當從Windows中執行的窗體應用程序,它返回:
C:\Users\MyUsername\AppData\Roaming\...\Database.xml
當從Windows服務中執行,它返回:
C:\Windows\system32\config\systemprofile\AppData\Roaming\...\Database.xml
我我現在訴諸於自定義安裝程序操作,因爲自定義操作將具有桌面環境,所以會在註冊表項中保留該路徑。如果有更好的方法,請讓我知道。
我真正感興趣的是找出原因,首先是行爲不同。有問題的Windows服務設置爲使用LocalSystem
帳戶以防萬一。
ApplicationData是用戶特定的......你確定你不需要CommonApplicationData? –
「作爲當前漫遊用戶的應用程序特定數據的公共存儲庫的目錄。」 - 爲什麼你會期望它對不同的用戶是一樣的? –
你們中的任何一個人都應該將此作爲答案。我還沒有對它進行測試,但它是完全有道理的,因爲桌面應用程序在登錄用戶下運行,而服務在LocalSystem下運行。 –