簡體   English   中英

啟動.NET應用程序時由什么決定您的USERPROFILE環境變量

[英]What determines your USERPROFILE Environment Variable when launching a .NET app

在運行VMWARE / Windows Server 2008的測試服務器上啟動時,我有一個.net / C#應用程序,收到指向C:\\ windows \\ system32 \\ config \\ systemprofile的USERPROFILE環境變量,但其他應用程序似乎以類似的方式繼承了C:\\ Users \\ {username}的正確值。

稍作改動-在我的開發機器上本地運行時,應用程序會收到正確的值。 因此,我認為這是個人資料/注冊表問題,其中包含應用程序中設置的某種組合。

當您嘗試打開OpenFileDialog或類似文件時,問題就顯現出來了。 您會收到異常“位置不可用:C:\\ Windows \\ system32 \\ config \\ systemprofile \\ Desktop引用的位置不可用...”

有任何想法嗎?

更新:該應用程序是WPF通過WCF針對IIS運行Web服務。 在本地開發中,我正在使用IISExpress。 我發現在觸摸客戶端中的WCF服務后,該應用程序繼承了服務在其下運行的IIS AppPool的APPDATA和USERPROFILE。 如果我調整AppPool值以使用我的用戶帳戶而不是ApplicationPoolDefault並設置LoadUserProfile = true-一切正常。 顯然,這是一件壞事。 作為替代方案,我在WPF應用程序運行時將環境變量緩存起來,並且在它最初連接到WCF之后,我會重置這些變量。 這似乎可以解決問題,但是我想以更好的方式解決它,但我不知道什么因素在WCF和IIS服務中影響了此行為。

它可能必須處理Web應用程序在IIS中運行的帳戶。 您可以將其從默認的“網絡服務”帳戶更改為實際的用戶帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM