设置DNS地址时出现问题

用户名

我正在使用一种流行的Delphi功能和一台带有Wi-fi适配器的笔记本电脑,试图设置首选和替代的dns服务器地址,并发现一条错误消息-“无效语法”。我认为“ Win32_NetworkAdapterConfiguration”功能仅在以太网适配器中有效,而在Wi-fi适配器中无效,或者我错了吗?

产生的异常:

http://prntscr.com/4qvjmz 在此处输入图片说明 http://prntscr.com/4qvjvn
在此处输入图片说明

这是函数:

uses
ComObj, ActiveX, UrlMon, Variants;

    function SetDnsServers(const APrimaryDNS : string;
                           const AAlternateDNS : string = '') : integer;
    var Retvar : integer;
        oBindObj : IDispatch;
        oNetAdapters,oNetAdapter,
        oDnsAddr,oWMIService : OleVariant;
        i,iValue,iSize : longword;
        oEnum : IEnumvariant;
        oCtx : IBindCtx;
        oMk : IMoniker;
        sFileObj : widestring;
    begin
      Retvar := 0;
      sFileObj := 'winmgmts:\\.\root\cimv2';
      iSize := 0;
      if APrimaryDNS <> '' then inc(iSize);
      if AAlternateDNS <> '' then inc(iSize);

      if iSize = 0 then begin
       oDnsAddr := VarArrayCreate([1,iSize],varOleStr);
       oDnsAddr[1] := APrimaryDNS;
       if iSize > 1 then oDnsAddr[2] := AAlternateDNS;
      end;

      OleCheck(CreateBindCtx(0,oCtx));
      OleCheck(MkParseDisplayNameEx(oCtx,PWideChar(sFileObj),i,oMk));
      OleCheck(oMk.BindToObject(oCtx,nil,IUnknown,oBindObj));
      oWMIService := oBindObj;

      oNetAdapters := oWMIService.ExecQuery('Select * from ' +
                                            'Win32_NetworkAdapterConfiguration ' +
                                            'where IPEnabled=TRUE');
      oEnum := IUnknown(oNetAdapters._NewEnum) as IEnumVariant;

      while oEnum.Next(1,oNetAdapter,iValue) = 0 do begin
        try
          if iSize > 0 then
            Retvar := oNetAdapter.SetDNSServerSearchOrder(oDnsAddr)
          else
            Retvar := oNetAdapter.SetDNSServerSearchOrder();
        except
          Retvar := -1;
        end;

        oNetAdapter := Unassigned;
      end;

      oDnsAddr := Unassigned;
      oNetAdapters := Unassigned;
      oWMIService := Unassigned;
      Result := Retvar;
    end;



//Usage:

    begin
    SetDnsServers('104.131.220.61','104.131.220.61');

    end.
用户名

我用其他功能解决了我的问题,谢谢大家!

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;
var
 i : integer;
begin
    Result   :=VarArrayCreate([0, High(Arr)], varVariant);
    for i:=Low(Arr) to High(Arr) do
     Result[i]:=Arr[i];
end;

procedure  SetDNS();
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
begin
CoInitialize(nil);
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray(['104.131.220.61']);
    if FWbemObject.SetDNSServerSearchOrder(vIPAddress) = 0 then
    begin
    exit;
    end;
    VarClear(vIPAddress);
    FWbemObject:=Unassigned;
    CoUninitialize;
  end;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设置Shopizer时出现问题

来自分类Dev

启动Sikuli设置时出现问题

来自分类Dev

sprintf打印或返回IP地址时出现问题

来自分类Dev

更改链接列表中的指针的地址时出现问题

来自分类Dev

获取HID设备的MAC地址时出现问题

来自分类Dev

从AP获取IP地址时出现问题

来自分类Dev

使用dns选项运行CURL时出现问题

来自分类Dev

使用 dns 选项运行 CURL 时出现问题

来自分类Dev

在Makefile中设置PATH时出现问题

来自分类Dev

设置Pubnub Nodejs服务器时出现问题

来自分类Dev

在JFrame中设置布局时出现问题

来自分类Dev

在iTunesConnect中设置“税收信息”时出现问题

来自分类Dev

设置用户空间LXC容器时出现问题

来自分类Dev

设置文本的垂直位置时出现问题

来自分类Dev

设置CKAN虚拟环境时出现问题

来自分类Dev

创建和设置Scala项目时出现问题

来自分类Dev

设置python 3.7虚拟环境时出现问题

来自分类Dev

设置tornado.web.Application时出现问题

来自分类Dev

在Windows 10 Home上设置KUBECTL时出现问题

来自分类Dev

条带:在订阅上设置关联帐户时出现问题

来自分类Dev

使用onclick设置tagName属性时出现问题

来自分类Dev

设置用户空间LXC容器时出现问题

来自分类Dev

设置iptables时出现问题(LDAP流量被阻止)

来自分类Dev

用烧瓶设置Chartkick时出现问题

来自分类Dev

在14.04.1安装上设置Thunderbird时出现问题

来自分类Dev

在CNAME上设置HTTPS时出现问题

来自分类Dev

设置显示为阻止时孩子出现问题

来自分类Dev

设置JAVA_HOME变量时出现问题

来自分类Dev

在设置Chrome起始页时出现问题