Сообщение Re[10]: CreateProcessAsUser из сервиса от 30.09.2019 8:12
Изменено 30.09.2019 8:13 Somescout
Re[10]: CreateProcessAsUser из сервиса
Здравствуйте, okman, Вы писали:
O>Здравствуйте, Somescout, Вы писали:
S>>Дело в том, что мне вообще не нужен доступ к UI — я пытаюсь запустить консольное приложение (без создния окна)...
O>Дело не только в UI. Если в сессии пользователя создать приложение "не с тем" Logon SID, то оно не только UI не
O>сможет показывать, но и создавать/открывать объекты в пространстве имен сессии. Например:
O>
Нашёл вот такое решение (фактически упакованная в C# классическая статья про запуск интерактивных процессов): https://stackoverflow.com/questions/677874/starting-a-process-with-credentials-from-a-windows-service/30687230#30687230
То есть делает то же самое — пользователю, от которого делается запуск, даёт доступ к WinStation текущего приложения. Проверил — работает, и из сервиса, и из консоли.
O>Здравствуйте, Somescout, Вы писали:
S>>Дело в том, что мне вообще не нужен доступ к UI — я пытаюсь запустить консольное приложение (без создния окна)...
O>Дело не только в UI. Если в сессии пользователя создать приложение "не с тем" Logon SID, то оно не только UI не
O>сможет показывать, но и создавать/открывать объекты в пространстве имен сессии. Например:
O>
O>HANDLE token;
O>if (LogonUserW(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token))
O>{
O> if (ImpersonateLoggedOnUser(token))
O> {
O> //
O> // Здесь получаем ошибку, GetLastError() возвращает 5 - ERROR_ACCESS_DENIED.
O> //
O> HANDLE event = CreateEventW(NULL, TRUE, FALSE, L"TestEvent-123456");
O>
Нашёл вот такое решение (фактически упакованная в C# классическая статья про запуск интерактивных процессов): https://stackoverflow.com/questions/677874/starting-a-process-with-credentials-from-a-windows-service/30687230#30687230
То есть делает то же самое — пользователю, от которого делается запуск, даёт доступ к WinStation текущего приложения. Проверил — работает, и из сервиса, и из консоли.
Re[10]: CreateProcessAsUser из сервиса
Здравствуйте, okman, Вы писали:
O>Здравствуйте, Somescout, Вы писали:
S>>Дело в том, что мне вообще не нужен доступ к UI — я пытаюсь запустить консольное приложение (без создния окна)...
O>Дело не только в UI. Если в сессии пользователя создать приложение "не с тем" Logon SID, то оно не только UI не
O>сможет показывать, но и создавать/открывать объекты в пространстве имен сессии. Например:
O>
Нашёл вот такое решение (фактически упакованная в C# классическая статья про запуск интерактивных процессов): https://stackoverflow.com/questions/677874/starting-a-process-with-credentials-from-a-windows-service/30687230#30687230
То есть делает то же самое — пользователю, от которого делается запуск, даёт доступ к WinStation текущего приложения. Проверил — работает, и из сервиса, и из консоли.
ЗЫ. Огромное спасибо за помощь!
O>Здравствуйте, Somescout, Вы писали:
S>>Дело в том, что мне вообще не нужен доступ к UI — я пытаюсь запустить консольное приложение (без создния окна)...
O>Дело не только в UI. Если в сессии пользователя создать приложение "не с тем" Logon SID, то оно не только UI не
O>сможет показывать, но и создавать/открывать объекты в пространстве имен сессии. Например:
O>
O>HANDLE token;
O>if (LogonUserW(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token))
O>{
O> if (ImpersonateLoggedOnUser(token))
O> {
O> //
O> // Здесь получаем ошибку, GetLastError() возвращает 5 - ERROR_ACCESS_DENIED.
O> //
O> HANDLE event = CreateEventW(NULL, TRUE, FALSE, L"TestEvent-123456");
O>
Нашёл вот такое решение (фактически упакованная в C# классическая статья про запуск интерактивных процессов): https://stackoverflow.com/questions/677874/starting-a-process-with-credentials-from-a-windows-service/30687230#30687230
То есть делает то же самое — пользователю, от которого делается запуск, даёт доступ к WinStation текущего приложения. Проверил — работает, и из сервиса, и из консоли.
ЗЫ. Огромное спасибо за помощь!