Запуск интерактивного процесса из службы Windows в Windows 10 - PullRequest
0 голосов
/ 18 октября 2018

Ранее был хороший вопрос / ответ: «Запуск интерактивного процесса из Windows Service в Windows 7».Это относится к этой статье: 1 .

Моя проблема та же, но я использую Windows 10.

Я пытаюсь выполнить рецепт 1.А из этогостатья (Служба работает в контексте учетной записи 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 ... }
...