Ранее был хороший вопрос / ответ: «Запуск интерактивного процесса из Windows Service в Windows 7».Это относится к этой статье: 1 .
Моя проблема та же, но я использую Windows 10.
Я пытаюсь выполнить рецепт 1.А из этогостатья (Служба работает в контексте учетной записи LocalSystem и пытается запустить приложение в интерактивном режиме, когда пользователь вошел в систему.)
Мой код:
- Получает привилегию SE_TCB_NAME
- Успешно вызывает WTSQueryUserToken (WTSGetActiveConsoleSessionId (), & AdminToken)
- Успешно вызывает 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 ... }