[英]C# Process.Start with credentials fails with Access Denied
我在C#中有一个Win Forms应用程序,该应用程序可在员工PC上运行。 在应用程序中,我使用Process.Start调用了另一个可执行文件,但是我传递了在域上具有管理员特权的用户的用户名和密码,因为员工没有运行该可执行文件的权限。
可执行文件位于C上的文件夹中:
该exe在Windows XP计算机上成功启动,但在Windows 7上失败并显示“ Access Denied”错误。我没有找到解决方案。 任何想法?
try
{
var pass = new SecureString();
pass.AppendChar('b');
pass.AppendChar('l');
pass.AppendChar('a');
pass.AppendChar('b');
pass.AppendChar('l');
pass.AppendChar('a');
var pro = new ProcessStartInfo
{
FileName = AppDomain.CurrentDomain.BaseDirectory + "myExe.exe",
UserName = "username",
Password = pass,
Domain = "domain",
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
RedirectStandardInput = true
};
Process.Start(pro);
}
catch (Exception x)
{
MessageBox.Show("Failed to call updater.\n" + Help.ErrorMsg(x)); Application.Exit();
}
喂
Win Forms应用程序必须以管理员权限运行,以便以更高的权限启动另一个进程。
您的问题与c#无关。 这是一个UAC问题。
考虑到您要给他们和exe运行具有提升权限的内容,我假设您考虑到用户可以使用反编译器查看凭据。
另外,如果您想做对的话,我建议您使用MDM解决方案,例如Microsoft SCCM( https://www.microsoft.com/zh-cn/cloud-platform/system-center-configuration-manager )。 使用类似的方法,您可以执行以下操作:
您可以控制最终用户的PC,而不必授予他们提升的权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.