gpt4 book ai didi

c# - 从不受信任的域生成 GPO 报告

转载 作者:行者123 更新时间:2023-11-30 12:41:41 34 4
gpt4 key购买 nike

我使用 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(某种取消 token )。

您正在为两者传递相同的对象。我想知道这是否是让它窒息的原因。您可以尝试创建第二个对象。

也许它也不喜欢将 Type.Missing 作为值。您可以尝试将它们设置为 null。

还有,组策略对它有什么特殊的权限吗?

您正在使用的 ImpersonationContext 是什么 namespace ?我找不到它。我们确实有一个不受信任的域在工作,我可以用它来测试,如果我能让你的代码编译的话。

编辑:如果您的 DllImport 语句中有 SetLastError = true,则可以使用 Marshal.GetLastWin32Error() 获取一些额外的详细信息。例如:

try {
result = gpo.GenerateReport(GPMReportType.repHTML, ref missing, out missing).Result;
} catch {
var win32 = new Win32Exception(Marshal.GetLastWin32Error());
Console.Write(win32.Message);
}

对我来说,它告诉我

An attempt was made to reference a token that does not exist

这并没有解决难题,但它是难题的另一部分。

关于c# - 从不受信任的域生成 GPO 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36845681/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com