Пожалуйста, объясните мне смысл функции CreateProcessWithLogonW с флагом LOGON_NETCREDENTIALS_ONLY. Судя по внешним признакам она ни чеи не отличается от CreateProcess. Прзнаки такие:
— процесс запускается независимо от содержимого параметров lpUsername, lpDomain, lpPassword. Т.е. может быть неправильным домен, имя пользователя или пароль — не важно, процесс всё равно запустится.
— В запущенном процессе функция GetUserName возвращает имя запускающего пользователя, а не то, которое я пердал в параметре lpUsername.
Здравствуйте SergH, Вы писали:
SH>Пожалуйста, объясните мне смысл функции CreateProcessWithLogonW с флагом LOGON_NETCREDENTIALS_ONLY. Судя по внешним признакам она ни чеи не отличается от CreateProcess. Прзнаки такие:
SH>- процесс запускается независимо от содержимого параметров lpUsername, lpDomain, lpPassword. Т.е. может быть неправильным домен, имя пользователя или пароль — не важно, процесс всё равно запустится.
SH>- В запущенном процессе функция GetUserName возвращает имя запускающего пользователя, а не то, которое я пердал в параметре lpUsername.
В MSDN вроде все достаточно прозрачно написано:
Log on, but use the specified credentials on the network only. The new process uses the same token as the caller, but the system creates a new logon session within LSA, and the process uses the specified credentials as the default credentials.
This value can be used to create a process that uses a different set of credentials locally than it does remotely. This is useful in inter-domain scenarios where there is no trust relationship.
С точки зрения локальной системы такой процесс действительно не отличается от созданного CreateProcess. Но вот когда процесс начнет обращаться к сетевым ресурсам: сетевым дискам, серверам RPC/DCOM, тогда будут использоваться домен, имя пользователя и пароль (обобщенно называемые credentials), которые были указаны при вызове CreateProcessWithLogonW.
Здравствуйте Alex Fedotov, Вы писали:
AF>В MSDN вроде все достаточно прозрачно написано:
AF>Log on, but use the specified credentials on the network only. The new process uses the same token as the caller, but the system creates a new logon session within LSA, and the process uses the specified credentials as the default credentials.
AF>This value can be used to create a process that uses a different set of credentials locally than it does remotely. This is useful in inter-domain scenarios where there is no trust relationship.
AF>С точки зрения локальной системы такой процесс действительно не отличается от созданного CreateProcess. Но вот когда процесс начнет обращаться к сетевым ресурсам: сетевым дискам, серверам RPC/DCOM, тогда будут использоваться домен, имя пользователя и пароль (обобщенно называемые credentials), которые были указаны при вызове CreateProcessWithLogonW.