1

インストール時に C# で作成されるローカル アカウントがいくつかあります。これらの新しいアカウントに特定の権限を付与するグループ ポリシーがあります。

私が解決しようとしている問題は、グループ ポリシーを新しいアカウントにプッシュするにはどうすればよいかということです。グループ ポリシーが適用されていないと、アプリケーションは機能しません。

cmd プロンプトを開いて gpupdate /force を実行すると修正されますが、インストール時と実行時との間をよりシームレスに移行する必要があります。

4

3 に答える 3

6

それはトリックを行う必要があります:

    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");
    }
于 2013-08-12T19:44:54.397 に答える
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)
            {

            }
        }
于 2013-08-14T17:50:47.643 に答える