【发布时间】:2014-03-07 17:25:55
【问题描述】:
我有一个 Windows 服务,它一直为所有登录的用户运行一个 WPF 应用程序,它工作正常,现在在 WPF 应用程序中我无法获得当前用户名作为 Environment.UserName;返回“SYSTEM”,这是可以理解的。所以我的想法是找到可以通过 Process.GetCurrentProcess().SessionId 检索的当前进程的会话 ID,然后获取登录到机器的所有用户的列表并循环通过它找到与进程会话匹配的会话 ID id 和后来的用户名。
但我不知道如何获取所有登录用户的列表,或者如果有人可以帮助我提供替代方案,我将不胜感激。
【问题讨论】:
-
您可以使用 Window 查找所有活动进程并获取该进程的用户。以 SYSTEM 身份运行的服务应该有权执行此操作。
-
当它开始为他们做任何事情时,为什么不简单地将用户名发送到您的服务。 Process.GetCurrentProcess 将是您在服务中的服务...
-
@TonyHopkinson 首先我无法从 Windows 服务获取用户名,其次我采用所有“winlogon”进程,即登录用户数并在每个用户会话中说明 WPF 应用程序。
-
我没看懂剧情!每个用户将运行自己的 WPF 应用程序,还是只有一个 WPF 应用程序和许多用户同时登录?
-
您正在寻找“冒充呼叫者”。 How to: Impersonate the Original Caller in WCF 很有可能是您要查找的文章。
标签: c# wpf windows windows-services