Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# 从本地系统帐户下运行的windows服务获取当前用户目录_C#_Windows Services - Fatal编程技术网

C# 从本地系统帐户下运行的windows服务获取当前用户目录

C# 从本地系统帐户下运行的windows服务获取当前用户目录,c#,windows-services,C#,Windows Services,我有一个在“本地系统”下运行的windows服务。在“OnStart”方法中,我使用 eventLog.WriteEntry($"Path: {Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), @"Pictures")}") 它记录为“路径:C:\WINDOWS\system32\config\systemprofile\Pictures” 但与我使用Console.WriteLine在

我有一个在“本地系统”下运行的windows服务。在“OnStart”方法中,我使用

eventLog.WriteEntry($"Path: {Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), @"Pictures")}")
它记录为“路径:C:\WINDOWS\system32\config\systemprofile\Pictures”

但与我使用Console.WriteLine在控制台应用程序中尝试的相同,它记录了“路径:C:\Users\john\Pictures”

在windows服务中,我需要在从控制台应用程序获取时访问当前用户目录


请在这方面帮助我。

该服务的当前用户是本地系统。它不是在用户帐户“john”下运行,而是在特殊系统帐户“Local system”下运行。如果希望windows服务以用户“john”的身份运行,则可以在安装服务时指定,或在windows中的“services”实用程序中对其进行更改。我认为windows服务不必与用户配置文件交互。你想达到什么目标?是否要处理当前记录的用户图片?然后,您可以尝试获取登录的用户配置文件。请注意,可以登录多个用户基本上我正在构建一个windows服务,该服务将从图片库“C:\Users\john\pictures”下的特定文件夹(如“test”)将图像/图片上载到azure blob存储。我使用FileSystemWatcher接收新文件的通知并开始上传。我假设系统中只有一个用户。假设您需要,但Windows是多用户和多会话的(例如RDP会话、快速用户切换、runas登录、计划任务、跨肩UAC),那么您如何确定在这里使用哪个用户的配置文件?这是否为通过命名管道发送的请求提供服务?在这种情况下,您可以使当前线程模拟请求客户端;查找.NET等效的
ImpersonateNamedPipeClient
。可以使用获取当前用户会话和本地用户配置文件路径。然而,只有在有用户登录的情况下,服务才会工作,并且不做任何其他操作。windows服务的理念是即使没有用户登录也能工作。你可以换成