其实就是在程序中把IIS中原来那个目录(C:\Inetpub\wwwroot)改为其它目录!

解决方案 »

  1.   

    function CreateWebSite(szServerIPDefault,szServerPortDefault)
    STRING szCmdLine,szWaitTxt;
    begin
    if ((szServerIPDefault = "") || (szServerPortDefault = "")) then 
    MessageBox ("您没有设定"+@PRODUCT_NAME+"运行的服务器IP地址或端口!!IIS信息服务设置失败!\n请自行创建IIS站点,并将主目录设为:"+TARGETDIR,SEVERE);
    else
    szWaitTxt=" 正在创建IIS和设置站点....";
    SdShowMsg (szWaitTxt, TRUE);
    Delay(2);
    szCmdLine = "\""+TARGETDIR ^"mkw3site.vbs\""+" -r \""+TARGETDIR+"\\CRM_NET\" -i "+szServerIPDefault+" -o "+szServerPortDefault+" -t \"e_Anlcrm\""; 
    if (ShellExecute("CScript.exe " + szCmdLine) < 0) then
    MessageBox ("不能建立WEB 虚拟目录,没有找到 CScript.exe 或执行脚本错误.",SEVERE);
    endif;
    SdShowMsg (szWaitTxt, FALSE);
    endif;
    return 0;
    end;这是InstallShield的语法,你可以自行改写。
      

  2.   

    难道没有可以实现该功能的API函数吗?
      

  3.   

    问题已经解决!
    我将方法写出来,这个方法是在大富翁论坛资料中参考并修改的,不对之处请指点。如果有更好的方法,请务必告诉我哦!procedure TfrmServer.fButton3Click(Sender: TObject);
    var
      WebSite, WebServer, WebRoot: Variant;
    begin
      try
        try
          WebSite := CreateOleObject('IISNamespace');   
          WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');  //IIS服务对象
          WebServer := WebSite.GetObject('IIsWebServer', '1');   
          WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');  //IIS主虚拟目录对象  
          Sleep(2000);
          WebRoot.Path := ExtractFileDir(ParamStr(0));  //设置虚拟目录为应用程序本身目录
          WebRoot.AccessRead := true;  //设置虚拟目录属性
          WebRoot.SetInfo;  //保存设置  
          MessageBox(Handle,'WEB服务器虚拟目录设置完毕! ','系统信息',0+64);
        except
          On E: Exception Do
            MessageBox(Handle,PChar('WEB服务器虚拟目录设置失败:' + E.Message),'系统消息',0+16);
        end;
      finally
        WebSite := Null;
        WebServer := Null;
        WebRoot := Null;
      end;
    end;
      

  4.   

    碰到系统服务问题,先看有没有系统的COM接口
    Windows是用COM堆起来的。:)