在C#中为Windows设置和获取DHCP选项

时间:2015-04-29 23:05:07

标签: c# windows dhcp

使用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      在ManageDHCP.DHCPManager._GetOption(OptionTarget target,UInt32 optionID,String subnet,String reservedIP)

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

1 个答案:

答案 0 :(得分:0)

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