使用Microsoft.GroupPolicy获取GPO信息

时间:2013-05-06 13:34:39

标签: c# gpo

我们正在尝试获取计算机GPO的信息。因此我们想使用c# - 而不是gpresult.exe(因为它可以在系统上下文中执行...)。

好吧,我发现有一个可以在C#中导入的DLL Microsoft.GroupPolicy.Management.dll。听起来太容易了:

using Microsoft.GroupPolicy;

[...]

GPRsop rsop = new GPRsop(RsopMode.Logging, "root\\RSOP\\Computer");
rsop.LoggingComputer = "MyComputer";
rsop.LoggingUser = "domain\\user";
rsop.LoggingMode = LoggingMode.Computer;
rsop.CreateQueryResults();
rsop.GenerateReportToFile(ReportType.Xml, "C:\\Temp\\test.xml");

作为输出文件,我得到了这个:

<?xml version="1.0" encoding="utf-16"?>
<Rsop xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.microsoft.com/GroupPolicy/Rsop">
  <ReadTime>2013-05-06T13:28:17.1529206Z</ReadTime>
  <DataType>LoggedData</DataType>
</Rsop>

这里曾经使用过这个DLL的人可以给我一些提示吗? 提前谢谢!

干杯

2 个答案:

答案 0 :(得分:0)

在生成报告之前,您应该执行rsop.CreateQueryResults()。这需要设置LoggingModeLoggingUserLoggingComputer属性。

答案 1 :(得分:-1)

        using GPMGMTLib;


        GPM groupPolicyManagement = new GPM();
        IGPMConstants groupPolicyConstants = groupPolicyManagement.GetConstants();
        GPMRSOP rsop = groupPolicyManagement.GetRSOP(groupPolicyConstants.RSOPModeLogging, null, 0);
        rsop.LoggingComputer = "MyComputer";
        rsop.LoggingUser = "domain\\user";
        rsop.CreateQueryResults();
        rsop.GenerateReportToFile(groupPolicyConstants.ReportXML, "C:\\Temp\\test.xml");