Mar*_*rek 2 c# windows-services
我在管理员帐户下运行Windows服务,我想知道谁是当前登录的用户.它将与当前运行的WindowService帐户不同.有没有简单的方法从c#中获取它?
它不是:System.Security.Principal.WindowsIdentity.GetCurrent()既不是System.Environment.UserName
谢谢
编辑
我感兴趣的是当前使用控制台会话登录的用户.谢谢jadarnel27
我对其他远程会话不感兴趣,因为这不是我的情况.
1)Cassia应该能够为您提供当前登录用户的列表,包括RDC.
foreach (ITerminalServicesSession sess in new TerminalServicesManager().GetSessions())
{
// sess.SessionId
// sess.UserName
}
Run Code Online (Sandbox Code Playgroud)
2)WMI(SO 答案)
Select * from Win32_LogonSession
Run Code Online (Sandbox Code Playgroud)
3)PInvoke到WTSEnumerateSessions
4)枚举"explorer.exe"的所有实例并使用PInvoke(OpenProcessHandle)获取所有者.
Process[] processes = Process.GetProcessesByName("explorer");
Run Code Online (Sandbox Code Playgroud)
这有点hacky.WMI也可用于此目的.
如果您决定使用使用WMI的解决方案,那么将winmgmt设置为服务的依赖项可能是个好主意.
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |