Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 启动.NET应用程序时,什么决定了USERPROFILE环境变量_C#_.net_Windows_Operating System_Registry - Fatal编程技术网

C# 启动.NET应用程序时,什么决定了USERPROFILE环境变量

C# 启动.NET应用程序时,什么决定了USERPROFILE环境变量,c#,.net,windows,operating-system,registry,C#,.net,Windows,Operating System,Registry,在运行VMWARE/Windows server 2008的测试服务器上启动.net/C#应用程序时,我收到一个指向C:\Windows\system32\config\systemprofile的USERPROFILE环境变量,但其他似乎以类似方式构建的应用程序却插入了正确的C:\Users\{username}值 稍微有点扭曲-应用程序在我的开发机器上本地运行时收到正确的值。所以我认为这是一个配置文件/注册表问题,在我的应用程序中有一些设置组合 当您试图打开OpenFileDialog或类似

在运行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应用程序池的APPDATA和USERPROFILE。如果我调整AppPool值以使用我的用户帐户而不是ApplicationPoolDefault并设置LoadUserProfile=true,则一切正常。显然这是一件坏事。作为替代方案,我在WPF应用程序运行时缓存掉环境变量,在它最初连接到WCF后,我重置变量。这似乎解决了这个问题,但我想用更好的方法解决它,但我不知道是什么影响了WCF和我的IIS服务中的这种行为。

它可能必须处理web应用在IIS中运行的帐户。您可以将其从默认的“网络服务”帐户更改为实际的用户帐户。

您是否使用
process.Start
以编程方式启动该进程?进程是否从Windows服务启动?感谢您的回复。当我们从桌面上的exe启动应用程序时,该值存在。它还使用Process.Start管理生成其他进程,以及在子AppDomains中托管dll。但它们最终都从父对象继承了相同的值。我有另一个应用程序也可以启动相同的进程,但该应用程序(如上所述)接收到正确的值,因此子进程也继承了正确的值。它在哪里说这是一个web应用程序?该应用程序是一个WPF前端,使用WCF连接到IISExpress服务器。实际上,更准确地说。在服务器上,它直接部署在IIS上,而不是IISExpress。客户端仍在连接。客户端中存在与AppPool相关的环境变量。不确定这是否在指示器中意味着以某种方式使用WCF,并且我们的设置加载了不正确的配置文件。感谢您提供的详细信息,我应该询问。