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