Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 找到用户的正确方法/<;名称>;C中的目录#_C#_C# 4.0_Windows Services - Fatal编程技术网

C# 找到用户的正确方法/<;名称>;C中的目录#

C# 找到用户的正确方法/<;名称>;C中的目录#,c#,c#-4.0,windows-services,C#,C# 4.0,Windows Services,我尝试了很多解决方案,但都没有达到预期的效果。我知道可以使用Environment.SpecialFolder枚举。我已经试过了,但都没有用。我正在编写一个需要访问C#> C:\Users\Shahbaaz\efb 正在处理Win7、.NET4和VS13 更新: 我的问题是无法以编程方式访问C:\Users\Shahbaaz。Shahbaaz是登录帐户的名称。efb文件夹仅用于图示。很抱歉。我使用了UserProfile enum,但最终得到了C:\SYSTEM目录。CommonDocument

我尝试了很多解决方案,但都没有达到预期的效果。我知道可以使用Environment.SpecialFolder枚举。我已经试过了,但都没有用。我正在编写一个需要访问C#> C:\Users\Shahbaaz\efb

正在处理Win7、.NET4和VS13

更新:
我的问题是无法以编程方式访问C:\Users\Shahbaaz。Shahbaaz是登录帐户的名称。efb文件夹仅用于图示。很抱歉。我使用了UserProfile enum,但最终得到了C:\SYSTEM目录。CommonDocuments等给了我C:\Users\Public。。。目录。另外,如果我只使用Environment.Username,它会给我系统而不是登录的用户名。希望这有帮助

我想我知道发生了什么事。写了一个小测试:

[Test]
public void PrintAllSpecialFolders()
{
    var values = Enum.GetValues(typeof(Environment.SpecialFolder));
    Console.WriteLine("Printing special folder paths:");
    foreach (Environment.SpecialFolder value in values)
    {
        Console.WriteLine("{0}: {1}", value, Environment.GetFolderPath(value, Environment.SpecialFolderOption.None));
    }
 }
这清楚地显示了预期结果(Windows 7):

。。。
UserProfile:C:\Users\
...

但是:您正在使用一项服务(您的标记指明了该服务),并且您可能正在本地系统帐户下运行该服务。本地系统帐户在预期位置没有用户文件夹。在用户帐户下运行服务,或者接受给定路径作为LocalSystem帐户的配置文件文件夹。不要尝试从LocalSystem访问您的用户帐户。您可能会遇到权限错误

到底出了什么问题?使用SpecialFolder枚举得到了什么?“efb”文件夹是什么?这是不标准的。我的问题是无法通过编程方式访问C:\Users\Shahbaaz。Shahbaaz是登录帐户的名称。efb文件夹仅用于图示。很抱歉。我使用了UserProfile enum,但最终得到了C:\SYSTEM目录。CommonDocuments等给了我C:\Users\Public\。。。目录。另外,如果我只使用Environment.Username,它会给我系统而不是登录的用户名。希望这有帮助!你看过Environment.SpecialFolder上的文档了吗?看起来你应该使用SpecialFolder.UserProfile,是的。UserProfile将我引导到以下目录:C:\Windows\system32\config\systemprofile\Thank!这让人大开眼界。事实证明,要在(我的)用户帐户上运行我的服务,我需要在每次安装时提及我的密码。现在这可能是一个障碍,因为我正在编写一个动态服务,作为我项目的一部分,它可以在任何pc上执行。也许,我应该更改所需文件夹的位置,以一劳永逸地缓解这种情况。再次感谢!
 ...
 UserProfile: C:\Users\<myusername>
 ...