Process.Start() 模拟问题
尝试使用另一个访问令牌启动进程,但没有成功,它以非模拟用户身份运行。
using (WindowsIdentity identity = new WindowsIdentity(token))
using (identity.Impersonate())
{
Process.Start("blabla.txt");
}
如何使其正常工作?
Trying to start process with another access token, without success, it runs as the non-impersonated user.
using (WindowsIdentity identity = new WindowsIdentity(token))
using (identity.Impersonate())
{
Process.Start("blabla.txt");
}
How to make this work properly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要设置 ProcessStartInfo.UserName 和 Password 属性。 UseShellExecute 设置为 false。如果您只有一个令牌,则调用 CreateProcessAsUser()。
You need to set the ProcessStartInfo.UserName and Password properties. With UseShellExecute set to false. If you only have a token then pinvoke CreateProcessAsUser().
尝试 http://msdn.microsoft.com/en-us/library 中的示例/w070t6ka.aspx
您还可以使用 CreateProcessAsUser 窗口函数。
http://www.pinvoke.net/default.aspx/advapi32/createprocessasuser.html
Try this example from http://msdn.microsoft.com/en-us/library/w070t6ka.aspx
You can also use CreateProcessAsUser windows function.
http://www.pinvoke.net/default.aspx/advapi32/createprocessasuser.html
之后,从您的页面代码中,您可以运行:
对于域帐户:
ImpersonationUtils.LaunchAsDomainUser("BlaBla cmd code", 用户名, 密码, 域);
对于本地帐户:
ImpersonationUtils.LaunchAsLocalUser("BlaBla cmd code", 用户名, 密码);
我希望它会有所帮助
After this, from your page code, you can run :
For Domain accounts :
ImpersonationUtils.LaunchAsDomainUser("BlaBla cmd code", UserName, Password, Domain);
For Local Accounts :
ImpersonationUtils.LaunchAsLocalUser("BlaBla cmd code", UserName, Password);
I hope it will help