C# 使用Microsoft.GroupPolicy获取GPO信息

C# 使用Microsoft.GroupPolicy获取GPO信息,c#,gpo,C#,Gpo,我们正在努力获取我们计算机的GPO信息。因此,我们希望使用c#-而不是gpresult.exe(因为它可以在系统上下文中执行…) 嗯,我发现有一个DLL Microsoft.GroupPolicy.Management.DLL可以用C#导入。听起来太简单了: using Microsoft.GroupPolicy; [...] GPRsop rsop = new GPRsop(RsopMode.Logging, "root\\RSOP\\Computer"); rsop.LoggingCom

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

嗯,我发现有一个DLL Microsoft.GroupPolicy.Management.DLL可以用C#导入。听起来太简单了:

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>

2013-05-06T13:28:17.1529206Z
LoggedData
这里有谁曾经使用过这个DLL,可以给我一些提示吗? 提前谢谢


干杯

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

听起来不错,但每当我想设置
LoggingMode
LoggingUser
LoggingComputer
时,我都会得到一个“超出范围”的异常,并且“参数异常未处理”。没有问题。哪一行抛出异常?你有没有单独尝试过,看看他们是全部失败还是只有一个失败?离家前我只剩下15分钟了,但如果你能给我这些信息,我可以在回来后检查一下。所有行都失败:
rsop.LoggingComputer=“MyComputer”;rsop.LoggingUser=“域\\用户”;rsop.LoggingMode=LoggingMode.Computer;rsop.CreateQueryResults()
        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");