如何使用C#以编程方式更新组策略?即gpupdate / force

时间:2013-08-12 19:31:53

标签: c# .net active-directory wmi group-policy

我有几个本地帐户是在安装时使用C#创建的。有一个组策略反过来授予这些新帐户某些权限。

我想解决的问题是如何将组策略推送到新帐户。如果未应用组策略,则应用程序将无法运行。

打开cmd提示符并运行gpupdate / force修复它,但我需要在安装时间和运行时之间进行更无缝的转换。

3 个答案:

答案 0 :(得分:5)

应该这样做:

    private void UpdateGroupPolicy()
    {
        FileInfo execFile = new FileInfo("gpupdate.exe");
        Process proc = new Process();
        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        proc.StartInfo.FileName = execFile.Name;
        proc.StartInfo.Arguments = "/force";
        proc.Start();
        //Wait for GPUpdate to finish
        while (!proc.HasExited)
        {
            Application.DoEvents();
            Thread.Sleep(100);
        }
        MessageBox.Show("Update procedure has finished");
    }

答案 1 :(得分:1)

即使是远程计算机也可以使用此代码

本地计算机不使用用户名,密码和模拟

private static void UpdateGPO(string machinename)
        {
           try
            {
                ConnectionOptions connectionOptions = new ConnectionOptions();

                connectionOptions.Username = @"Domain\Administrator";
                connectionOptions.Password = "password";
                connectionOptions.Impersonation = ImpersonationLevel.Impersonate;

                ManagementScope scope = new ManagementScope("\\\\" + machinename + "\\root\\CIMV2", connectionOptions);

                scope.Connect();

                ManagementClass clas = new ManagementClass(scope, new ManagementPath("Win32_Process"), new ObjectGetOptions());

                ManagementBaseObject inparams = clas.GetMethodParameters("Create");

                inparams["CommandLine"] = "GPUpdate /force";

                ManagementBaseObject outparam = clas.InvokeMethod("Create", inparams, null);
            }
            catch (Exception ex)
            {

            }
        }

答案 2 :(得分:1)

我猜你可以尝试使用WMI调用gpupdate / force。没有太多的编码,但它是相当手动的 - 您必须在需要时针对每台机器执行它。

Wmic / node:....进程调用create“gpupdate / force”

如果您不是域名poweruser,则可能需要添加本地凭据。

解决方案似乎很容易,但我可能会误解你的问题 - 如果有的话请更新我。

致以最诚挚的问候,

亚历