模拟安装应用程序c#

时间:2017-06-05 14:20:32

标签: c# windows impersonation

我正在尝试使用此处提供的模拟类在非管理员帐户中安装Windows更新修补程序(patch.msu)http://stackoverflow.com/questions/125341/how-do-you-do-impersonation-in-net 我正在硬编码Administrator的用户名,passowrd和域名。 我尝试了几个LogonTypes但没有任何影响,我得到以下错误/异常。

未提供所需的模拟级别,或提供的模拟”。

我不知道如何继续进行,我们需要在我们的客户系统上安装某些补丁,而不是向他们分享管理员详细信息。 我们非常感谢您对此的指导。

我的代码示例

    try
    {       

        using (Impersonation impersonate = new Impersonation(Environment.UserDomainName,
                "administrator", "XXXXXX"))
        {
                Process proc = new Process();
                proc.StartInfo.FileName = "wusa.exe";
                proc.StartInfo.Arguments = strPath;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.Verb = "runas";
                proc.Start();
                proc.WaitForExit();
        }
    }
    catch (Exception e)
    {
        throw new Exception(e.Message);
    }

1 个答案:

答案 0 :(得分:0)

这是由于很久以前的安全更新。

  

"认证后模拟客户端"和"创建全局对象"用户权限最初是在Windows 2000 Service Pack 4中引入的,以帮助提高Windows中的安全性。

Overview of the "Impersonate a Client After Authentication" and the "Create Global Objects" Security Settings (821546.KB.EN-US.2.2)

  

在身份验证后分配"模拟客户端"用户对用户的权限,允许代表该用户运行的程序模拟客户端。此安全设置有助于防止未经授权的服务器模拟通过远程过程调用(RPC)或命名管道等方法连接到它的客户端。

如果您想冒充域管理员,则需要添加这些用户权限。

  

默认情况下,设备的本地管理员组成员和设备的本地服务帐户将被分配"在身份验证后模拟客户端"用户权利。

<强>解决方案

  

重要提示:这不会为用户提供安装其他应用程序的完全管理员权限。

第一步的操作取决于环境:

  • 如果您使用的是Active Directory组策略,请编辑域控制器上的域安全策略:

    • 点击开始 - &gt;程序 - &gt;管理工具 - &gt;域安全政策
  • 如果未使用Active Directory组策略,请更改本地计算机上的配置

    • 点击开始 - &gt;设置 - &gt;控制面板 - &gt;管理工具 - &gt;本地安全政策

然后

  • 展开“本地策略”并选择“用户权限分配”。
  • 在右窗格中,双击身份验证后模拟客户端。
  • 在“安全策略设置”对话框中,单击“添加用户或组”。
  • 在“选择用户,计算机或组”对话框中,键入将运行该应用程序的组或用户的名称。
  • 选择检查名称并验证名称是否正确。
  • 将身份验证后模拟客户端的步骤重复设置为“创建全局对象”设置。