0
我一直在试图让当前登录使用下面的代码用户的令牌信息:无法获取当前用户的令牌信息
[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)
{
}
}
的问题是,布雷特永远是假的,currentToken总是0. 我得到的sessionid为1.
有人能告诉我这里出了什么问题吗?
我想使用这个令牌信息从Windows服务传递给CreateProcessAsUser函数。
感谢, 拉姆
非常感谢Chris ...我知道WTSQueryUSerToken()只能用于服务。我曾试着从一个控制台应用程序中尝试它,并认为它对于服务也是一样的......我将这个代码包含在我的服务中,并在短时间内恢复...... – Ram 2010-05-21 11:41:18
这在作为Windows服务运行时起作用...非常感谢,Chris ... – Ram 2010-05-21 11:50:29
@Ram,太棒了!很高兴帮助。 – 2010-05-21 11:51:11