我们正在尝试获取计算机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的人可以给我一些提示吗? 提前谢谢!
干杯
答案 0 :(得分:0)
在生成报告之前,您应该执行rsop.CreateQueryResults()
。这需要设置LoggingMode
,LoggingUser
和LoggingComputer
属性。
答案 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");