我在C#中有一个Win Forms应用程序,它运行在员工PC上。 在应用程序中,我使用Process.Start调用另一个可执行文件,但我传递了具有域管理员权限的用户的用户名和密码,因为员工没有运行可执行文件的权限。
可执行文件位于C:
上的文件夹中exe在Windows XP计算机上成功启动,但在Windows 7上因“访问被拒绝”错误而失败。 我找不到解决方案。有什么想法吗?
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();
}
答案 0 :(得分:0)
平,
Win Forms应用程序 必须以管理员权限运行才能启动具有更高权限的其他进程。
您的问题与c#无关。这是一个UAC问题。
鉴于您正在给予他们和exe来运行具有提升权限的内容,我假设您考虑到用户可以使用反编译器来查看凭据。
此外,如果你想做得对,我建议使用像Microsoft SCCM(https://www.microsoft.com/en-us/cloud-platform/system-center-configuration-manager)这样的MDM解决方案。通过这样的方式你可以做到:
您可以控制最终用户的PC,而不必为他们提供更高的权限。