繁体   English   中英

C#Process.Starting with凭据失败,访问被拒绝

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM