Function isVirtualDirExist(sDir) As Boolean
    On Error GoTo errh
    Dim oVirtualDir    'Delete Virtual Directory
    Set oVirtualDir = GetObject("IIS://LocalHost/w3svc/1/root/" + sDir)
            
    isVirtualDirExist = True
    
    Set oVirtualDir = Nothing
    Exit Function
errh:
    isVirtualDirExist = False
    Set oVirtualDir = Nothing
End Function

解决方案 »

  1.   

    function IsVirtualDirExist(strVirtualDir: string): Boolean;
    var
      oVirtualDir: Variant;
    begin
      Result := True;
      try
        //Delete Virtual Directory
        oVirtualDir := GetActiveOleObject('IIS://LocalHost/w3svc/1/root/' + strVirtualDir);///这一句报错:“无效的类别字符串”
        oVirtualDir := Unassigned;
      except
        Result := False;
        oVirtualDir := Unassigned;
      end;
    end;
      

  2.   

    高手出手呀,难道VB与DELPHI也有不能转换的问题吗
      

  3.   

    我才试了你的代码,并没有报错啊,我的是delphi7
      

  4.   

    编译不会报错的,调用该函数时就报错
    GetActiveOleObject('');
    CreateOleObject('');
    即使参数是空串都可以正常编译的。
    但调用时就会报错了。
      

  5.   

    GetActiveOleObject的参数不只是何意,应该是Delphi的函数不支持。尝试一下别的方法,同一种功能不一定就这一条路呀,再仔细想想!
      

  6.   

    看看vb里那个GetObject是什么函数,那个vb程序是用了adsi组件么?
      

  7.   

    其实我用DELPHI已经实现了,但这CSDN的人气确实让我心寒。把我写的代码贴出来,结帐!
      

  8.   

    unit U_IIS;interfaceuses
      ComObj, Variants;
      
      //一、判断一个虚拟目录是否存在:
      function IsVirtualDirExist(strVirtualDir: string): Boolean;
      //二、新建一个虚拟目录:
      function CreateVirtualDir(strVirtualDir, strRealPath: string): Boolean;
      //三、删除一个虚拟目录:
      function DeleteVirtualDir(strVirtualDir: string): Boolean;implementation//一、判断一个虚拟目录是否存在:
    function IsVirtualDirExist(strVirtualDir: string): Boolean;
    var
      WebSite, WebServer, WebRoot, VDir: Variant;
    begin
      Result := True;
      try
        try
          WebSite := CreateOleObject('IISNamespace');
          WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');
          WebServer := WebSite.GetObject('IIsWebServer', '1');
          WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
          VDir := WebRoot.GetObject('IIsWebVirtualDir', strVirtualDir);
        except
          Result := False;
        end;
      finally
        WebSite := Unassigned;
        WebServer := Unassigned;
        WebRoot := Unassigned;
        VDir := Unassigned;
      end;
    end;//二、新建一个虚拟目录:
    function CreateVirtualDir(strVirtualDir, strRealPath: string): Boolean;
    var
      WebSite, WebServer, WebRoot, VDir: Variant;
    begin
      Result := True;
      try
        try
          WebSite := CreateOleObject('IISNamespace');
          WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');
          WebServer := WebSite.GetObject('IIsWebServer', '1');
          WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
          VDir := WebRoot.Create('IIsWebVirtualDir', strVirtualDir);
          VDir.AccessRead := True;
          VDir.AccessWrite := True;
          VDir.AccessScript := True; //允许访问脚本
          VDir.Path := strRealPath;
          VDir.SetInfo;
        except
          Result := False;
        end;
      finally
        WebSite := Unassigned;
        WebServer := Unassigned;
        WebRoot := Unassigned;
        VDir := Unassigned;
      end;
    end;//三、删除一个虚拟目录:
    function DeleteVirtualDir(strVirtualDir: string): Boolean;
    var
      WebSite, WebServer, WebRoot: Variant;
    begin
      Result := True;
      try
        try
          WebSite := CreateOleObject('IISNamespace');
          WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');
          WebServer := WebSite.GetObject('IIsWebServer', '1');
          WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
          WebRoot.delete('IIsWebVirtualDir', strVirtualDir);
        except
          Result := False;
        end;
      finally
        WebSite := Unassigned;
        WebServer := Unassigned;
        WebRoot := Unassigned;
      end;
    end;end.