c# – 从不受信任的域生成GPO报告
我正在使用LOGON_TYPE_NEW_CREDENTIALS和LOGON32_PROVIDER_WINNT50调用LogonUser,以使我的线程模拟其他域中的用户.我能够连接到远程文件共享以及其他所有内容都可以很好地连接到不受信任的域.
我现在遇到的问题是当我使用GPMGMTLib生成GPO报告时,当它调用GenerateReport()时,我一直得到异常“HRESULT:0x80072020”. using GPMGMTLib; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace CrossDomainWork { class Program { static void Main(string[] args) { ImpersonationContext context = new ImpersonationContext("ourdmzdomain.com","dmzuser","dmzpassword"); context.Start(); GPM gpm = new GPM(); var constants = gpm.GetConstants(); var domain = gpm.GetDomain("ourdmzdomain.com","",constants.UseAnyDC); var gpo = domain.GetGPO("{31B2F340-016D-11D2-945F-00C04FB984F9}"); object missing = Type.Missing; var result = gpo.GenerateReport(GPMReportType.repHTML,ref missing,out missing).Result; context.Stop(); } } } 解决方法
我没有经验,所以这只是猜测.
查看documentation for GenerateReport,最后两个参数是pvarGPMProgress(用于报告进度)和pvarGPMCancel(某种取消令牌). 您正在为两者传递相同的对象.我想知道这是不是让它窒息了.您可以尝试创建第二个对象. 也许它也可能不喜欢将Type.Missing作为值.您可以尝试将它们设置为null. 此外,组策略是否具有任何特殊权限? 您正在使用的ImpersonationContext是什么名称空间?我找不到它.如果我可以编译你的代码,我们确实有一个不受信任的域,我可以测试. 编辑: try { result = gpo.GenerateReport(GPMReportType.repHTML,out missing).Result; } catch { var win32 = new Win32Exception(Marshal.GetLastWin32Error()); Console.Write(win32.Message); } 对我来说,它告诉我
哪个不能解决这个难题,但它是另一个难题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |