我想你正在运行你的服务进程作为NT AUTHORITY\SYSTEM
or .\LOCALSYSTEM
。有关详细信息,请参阅KB 243330 :
SID:S-1-5-18
名称:本地系统
描述:操作系统使用的服务帐户。
如果您想从桌面会话中获取 SID,您可以使用(通过使用可用的cassia - nuget-package):
ITerminalServicesSession GetActiveSession()
{
var terminalServicesSession = default(ITerminalServicesSession);
var terminalServicesManager = new TerminalServicesManager();
using (var server = terminalServicesManager.GetLocalServer())
{
foreach (var session in server.GetSessions())
{
if (session.ConnectionState == ConnectionState.Active)
{
// yep, I know ... LINQ ... but this is from a plain .NET 2.0 source ...
terminalServicesSession = session;
break;
}
}
}
return terminalServicesSession;
}
ITerminalServiceSession
-instance 确实包含SessionId
应该根据需要工作的属性。但请注意,会话状态存在一些注意事项 - 我不保证我的条件足够,您可能需要根据需要调整条件ConnectionState
。