草庐IT

WTSQueryUserToken

全部标签

c# - 对于某些版本的 Windows,Windows 服务无法在用户使用 WTSQueryUserToken 登录时启动交互过程

关注此link,我在我的C#解决方案中实现了WTSQueryUserToken并从我的Windows服务的OnStart调用了CreateProcessAsUserWrapper.LaunchChildProcess("app_path")方法以"LocalSystem"运行。它能够启动可与桌面交互的进程,但适用于WindowsProfessional而不是WindowsUltimate。我在WindowsProfessional64位上尝试过它,它能够在用户以交互方式登录时成功启动进程,但在WindowsUltimate64位版本上,CreateProcessAsUser方法返回fa

windows - 从服务在用户 session 中创建进程

我正在尝试让服务在Windows中打开的session中创建进程。我有这个代码:sessionId=WTSGetActiveConsoleSessionId();if(WTSQueryUserToken(sessionId,&dummy)){if(!DuplicateTokenEx(dummy,TOKEN_ALL_ACCESS,NULL,SecurityDelegation,TokenPrimary,&token)){CloseHandle(dummy);returnfalse;}CloseHandle(dummy);//Createprocessforuserwithdesktopm

c# - WTSQueryUserToken 在 C# 的 Windows 7 上总是抛出 "An attempt was made to reference a token that does not exist"

我正在尝试从Windows7上的Windows服务启动进程。这是我获取用户token的代码。uintsessionId=Kernel32.WTSGetActiveConsoleSessionId();varuserTokenPtr=newIntPtr();if(!WtsApi32.WTSQueryUserToken(sessionId,outuserTokenPtr)){intlastError=Marshal.GetLastWin32Error();thrownewWin32Exception(lastError);}这些是DllImport语句:publicclassKernel3