我有几个本地帐户是在安装时使用C#创建的。有一个组策略反过来授予这些新帐户某些权限。
我想解决的问题是如何将组策略推送到新帐户。如果未应用组策略,则应用程序将无法运行。
打开cmd提示符并运行gpupdate / force修复它,但我需要在安装时间和运行时之间进行更无缝的转换。
答案 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,则可能需要添加本地凭据。
解决方案似乎很容易,但我可能会误解你的问题 - 如果有的话请更新我。
致以最诚挚的问候,
亚历