Здравствуйте, blv, Вы писали:
blv>Как сделать так, чтобы CreateProcessWithLogonW не создавал новое окно, или в него можно было через пайпы ввести данные и прочитать, или сделать так чтобы при запуске перенаправлялись его потоки в input.txt и output.txt.
Посмотрите, для начала,
здесь и
здесь
Вкратце — нужно создать файл (или пайп), хэндл которого мог бы наследоваться, а затем передать этот
хэндл дочернему процессу через структуру STARTUPINFO (поля hStdInput, hStdOutput и hStdError, отвечающие за
соответствующие потоки ввода-вывода). Чтобы консольное окно не появлялось, нужно в wShowWindow этой же
структуры записать SW_HIDE. Поле bInheritHandles функции CreateProcess(AsUser/WithLogon, и т.п.)
должно быть TRUE — т.е. наследование должно быть включено явно.
blv>Или подскажите как CreateProcess запустить от имени конкретного пользователя.
CreateProcessWithToken, например.
Связанные функции — ImpersonateLoggedOnUser/RevertToSelf, LoadUserProfile и CreateEnvironmentBlock.