0

我们正在尝试获取我们计算机的 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>

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

干杯

4

2 回答 2

0

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

于 2013-05-06T13:44:33.227 回答
-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");
于 2015-08-11T14:06:59.370 回答