C# 无法获取当前用户';s令牌信息
我一直在尝试使用以下代码获取当前登录用户的令牌信息:C# 无法获取当前用户';s令牌信息,c#,C#,我一直在尝试使用以下代码获取当前登录用户的令牌信息: [DllImport("wtsapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool WTSQueryUserToken(int sessionId, out IntPtr tokenHandle); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastEr
[DllImport("wtsapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool WTSQueryUserToken(int sessionId, out IntPtr tokenHandle);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern uint WTSGetActiveConsoleSessionId();
static void Main(string[] args)
{
try
{
int sessionID = (int)WTSGetActiveConsoleSessionId();
if (sessionID != -1)
{
System.IntPtr currentToken = IntPtr.Zero;
bool bRet = WTSQueryUserToken(sessionID, out currentToken);
Console.WriteLine("bRet : " + bRet.ToString());
}
}
catch (Exception)
{
}
}
问题是,bRet总是false,currentToken总是0。
我将sessionid设置为1
有人能告诉我这里出了什么问题吗
我想使用此令牌信息将其从windows服务传递到CreateProcessAsUser函数
谢谢,
Ram您是将此代码作为Windows服务运行,还是仅在普通控制台或WinForms应用程序中运行?WTSQueryUSerToken只能由在LocalSystem帐户下运行的应用程序调用,这可以通过将其作为Windows服务运行来实现。非常感谢。。。我不知道WTSQueryUSerToken()只能从服务中使用。我让ben在一个控制台应用程序上尝试,认为这对服务也是一样的。。。我会将此代码包含在我的服务中,并在短时间内返回…@Ram,太好了!很高兴这有帮助。