var*_*ian 9 impersonation process
我需要能够以不同的用户身份运行流程,并且我已经找到了大量资源和不同的方法来实现这一目标.问题是,我需要运行一个非exe进程,例如带有html扩展名的路径,或者在我的情况下,运行" http://somewebserver/someApp.application ".
存在一个已知问题,即启动的进程不从其启动器继承模拟上下文,并且还存在一个已知问题,即在不同凭据下启动的进程需要是可执行文件(.exe).
但是,我如何以不同的用户身份启动.application文件(例如)?
(我尝试了各种p /调用CreateProcessWithLoginW的组合,在ProcessStartInfo中设置用户/密码凭证等.每个都面临上面提到的相同限制.)
启动非 exe 时,实际上只是 shell 查找要用于文件或 URL 的 exe。仍然有一个exe参与其中。
由于 shell 已经在运行,因此它不会继承您的模拟。您可以自己在注册表中查找 exe,然后调用 CreateProcessWithLoginW,本质上是模拟 shell 为您执行的操作。
例如,要打开 .txt 文件,请查找“HKEY_CLASSES_ROOT\.txt”。在那里您会看到类型是“txtfile”。然后查找“HKEY_CLASSES_ROOT\txtfile\shell\open\command”,您将看到 shell 将使用哪个 exe 文件,通常是“%SystemRoot%\system32\NOTEPAD.EXE %1”。