Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法获取当前用户';s令牌信息_C# - Fatal编程技术网

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,太好了!很高兴这有帮助。