У меня есть исполняемый файл Windows, который запускается из службы по телефону CreateProcessWithLogonW() с набором деталей, определенного пользователем.CreateProcessWithLogonW() проблемы - нужно запустить подпроцессы с тем же пользователем
Это работает нормально, и процесс начинается, как ожидалось. Однако, когда этот процесс пытается запустить другие процессы сам, в настоящее время просто используя CreateProcess(), они начинают сразу же умирать - это исполняемые файлы, которые требуют доступа к рабочему столу.
После прочтения на статью от Microsoft на CreateProcess() - http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
Я думаю, что можно понять, почему это происходит, и это имеет смысл в такой степени. CreateProcess() знает, что вызывающий процесс олицетворяет пользователя, поэтому использует его родительский процесс, который в этом случае является учетной записью Local System. Но, конечно, все, что работает в локальной учетной записи системы, не имеет необходимого нам доступа, поэтому запущенный процесс умирает.
Как ни странно, когда я был ранее с помощью LogonUser() и CreateProcessAsUser(), чтобы запустить исполняемый файл начальной внутри службы, он работал отлично. Но мне пришлось изменить это на CreateProcessWithLogonW() из-за проблем с неправильными привилегиями.
Кто-нибудь знает об этом решении? Я видел разговоры об этом в другом месте в Интернете, но не с каким-то определенным решением. Кажется, мне, возможно, нужен токен пользователя, с которым я вхожу в систему в CreateProcessWithLogonW(), поэтому я могу использовать его для запуска других процессов позже? Но у меня нет способа получить этот токен, может ли это быть возвращено для текущего пользователя каким-либо образом?
Любая помощь будет высоко ценится, спасибо :)
Этот параметр уже установлен, это не сама услуга, это проблема, она запускает исполняемый файл под правильным пользователем, это дополнительные процессы, которые этот исполняемый файл пытается запустить, которые вызывают проблемы ... –
Интересно. Я бы подумал, что разрешение будет унаследовано дочерними процессами. –