在远程域控制器上创建和链接GPO

时间:2016-02-23 14:24:45

标签: c# gpo

我已经尝试过以下代码,但它不起作用。我有例外:

  

访问被拒绝。 (HRESULT的例外情况:0x80070005   (E_ACCESSDENIED))

在这一行:

GPMGPO gpo = (GPMGPO) gpd.CreateGPO();

以下是实际代码:

public void CreateAndLinkGPO()
{
    string strGPO = "Test GPO";
    string strOU = "LDAP://DC=testdc,DC=local";
    GPM gpm = new GPM();
    GPMConstants gpc = (GPMConstants) gpm.GetConstants();
    GPMDomain gpd = (GPMDomain) gpm.GetDomain(Environment.GetEnvironmentVariable("USERDNSDOMAIN"), "", gpc.UseAnyDC);
    GPMSearchCriteria searchOBJ = gpm.CreateSearchCriteria();
    searchOBJ.Add(gpc.SearchPropertyGPODisplayName, gpc.SearchOpEquals, strGPO);
    GPMGPOCollection objGPOlist = gpd.SearchGPOs(searchOBJ);
    GPMSOM gpSom = gpd.GetSOM(strOU);
    GPMGPO gpo = (GPMGPO) gpd.CreateGPO();
    gpSom.CreateGPOLink(-1, objGPOlist[1]);
}

创建和链接GPO有更好的方法吗? 因为即使此代码确实有效,我仍然需要在每台服务器上安装远程服务器管理工​​具。应用程序需要运行多个域。

1 个答案:

答案 0 :(得分:0)

我已经采用了powershell方式,一切都像冠军一样。

我的目的是向AD用户添加证书。但似乎你不必用GPO来做。相反,您可以使用powershell命令执行此操作。

要创建新的AD用户,请按照以下指南操作:

Create Active Directory Users PowerShell Script

要将证书分配给现有AD用户,请按照以下指南操作:

Set Active Directory “Security Identity Mapping” / “Name Mapping” with C#/Powershell does not add to the right "store"