【问题标题】:Setting and Getting DHCP option for Windows in C#在 C# 中为 Windows 设置和获取 DHCP 选项
【发布时间】:2015-04-29 23:05:07
【问题描述】:

使用 C#,我正在尝试使用 ManageDHCP.dll 设置 dhcp 选项 12。简而言之,这就是我正在做的事情:

var dhcpManager = new DHCPManager(dhcpServerName)
var hostRecord = new HostInfo
               {
                  Name = deviceDhcpName,
                  IPv4 = deviceIpAddress,
                  IsReserved = true,
                  MAC = deviceMacAddress
               };

dhcpManager.SetRecord(dhcpServerScope, hostRecord);

String hostName = deviceDhcpName + "." + dnsZoneName;
var hostnameOpt = new Option
                  {
                     ID = 12,
                     Values = new List<string> { hostName }
                  };
dhcpManager.SetOption(hostnameOpt, dhcpServerScope, deviceIpAddress);

问题是,它此时就死了,日志没有记录异常。所以我在想也许我发送的格式不正确。所以我去尝试并获得一个选项。因此,在创建预订之后,使用上面的 SetRecord 函数 - 我改为调用它,只是为了尝试看看我是否可以获得查看正确格式的选项:

Option test = dhcpManager.GetOption(3, dhcpServerScope, deviceIpAddress);

抛出此异常:

ManageDHCP.DhcpException: DhcpGetOptionInfo at ManageDHCP.DHCPManager._GetOption(OptionTarget target, UInt32 optionID, String subnet, String reservedIP)

我是 C# 新手,我不确定是什么导致了这个异常。 Here 是指向 ManageDHCP 源代码的链接。我究竟做错了什么?我的格式不正确吗?

【问题讨论】:

  • 您链接到的页面上提供的示例代码是否有效?
  • 哪个链接?第二个链接是第一个链接中链接的库的源代码。它并没有真正展示如何使用它。
  • 您的第一个链接:ManageDHCP - Manage your DHCP server from Powershell and ASP.NET。最后有一个代码示例。
  • 这与我想要做的事情并不真正相关,即设置选项并创建记录,我认为我提供了正确的论点。获取只是为了检查格式,由于某种原因 enumOptions 与我提供的变量一起使用,所以我看到了所有选项元素,所以至少我到了某个地方。

标签: c# windows dhcp


【解决方案1】:

好像32位dll的setOption函数不起作用(DhcpGetOptionInfo抛出异常),所以我切换到64位dll。

【讨论】:

    猜你喜欢
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多