在Windows 10中从Windows Service启动交互过程

时间:2018-10-18 00:21:00

标签: service window interactive windows-10-desktop

以前,有一个很好的问题/答案:“在Windows 7中从Windows Service启动交互过程”。它指的是这篇文章:1

我的问题是相同的,但我使用的是Windows 10。

我正在尝试执行该文章中的处方1.A(服务正在LocalSystem帐户上下文中运行,并尝试以当前以交互方式登录的用户启动应用程序。)

我的代码:

  1. 获得SE_TCB_NAME特权
  2. 成功呼叫 WTSQueryUserToken(WTSGetActiveConsoleSessionId(),&AdminToken)
  3. 成功调用CreateProcessAsUserW [请参见下文]

这时我希望会出现一个命令外壳窗口,但是没有。

为什么不呢?

std::wstring commandLine = L"C:\\Windows\\System32\\Cmd.exe";
STARTUPINFO startupInfo =
{
    sizeof(STARTUPINFO),
    NULL,
    L"WinSta0"
};
PROCESS_INFORMATION processInformation;

if (!CreateProcessAsUserW(
    AdminToken,
    NULL,
    (PWSTR)commandLine.c_str(),
    NULL, // process attributes
    NULL, // thread attributes
    FALSE, // bInheritHandles
    (NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE),
    NULL, // environment
    L"C:\\", // current directory
    &startupInfo,
    &processInformation))
{ ... snip ... }

0 个答案:

没有答案