首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 控制 IIS 屬性:透過 VBScript + ScriptControl 實現極簡管理

     編輯:VC 教學

前言:純 VC++ 操作 IIS 太繁瑣

直接用 VC++ 操作 IIS 元件 (ADSI/COM) 程式碼冗長複雜。靈感來自 VBScript 管理 IIS 極簡短,決定採用VC++ 載入 ScriptControl → 執行 VBScript 方案,幾乎同一套架構可控制所有 IIS 屬性。

核心實作程式碼

void CTestDlg::OnBnClickedOk()
{
    // 1. 定義 VBScript 函數字串:修改指定網站的主目錄路徑
    char szScript[] =
        "Function ChangeWebPath(computer, webname, path) "
        "  On Error Resume Next "
        "  Dim vRoot, websvc, site "
        "  ChangeWebPath = -1 "
        "  Set websvc = GetObject(\"IIS://\" & computer & \"/W3svc\") "
        "  If Err <> 0 Then Exit Function "
        "  For Each site In websvc "
        "    If site.Class = \"IISWebServer\" Then "
        "      If site.ServerComment = webname Then "
        "        Set vRoot = site.GetObject(\"IISWebVirtualDir\", \"Root\") "
        "        vRoot.Path = path "
        "        vRoot.SetInfo "
        "        ChangeWebPath = 0 "
        "        Exit Function "
        "      End If "
        "    End If "
        "  Next "
        "End Function ";

    // 2. 呼叫腳本
    CString strScript = szScript;
    strScript += _T("z5 = ChangeWebPath(\"127.0.0.1\", \"預設網站\", \"C:\\\\Inetpub\\\\wwwroot\")");

    // 3. 執行
    m_ScriptControl.put_Language(_T("VBScript"));
    m_ScriptControl.AddCode(strScript);
    VARIANT result = m_ScriptControl.Eval(_T("z5"));

    if (result.iVal == 0)
        AfxMessageBox(_T("修改成功"));
    else
        AfxMessageBox(_T("修改失敗"));
}

關鍵步驟解析

  1. 引用 ScriptControl:專案 → 加入元件 → Microsoft Script Control 1.0,對話框放入控件 m_ScriptControl (ID: IDC_SCRIPTCTRL)。
  2. 腳本字串組裝:函數定義 + 呼叫語句合併為單一字串傳給 AddCode。
  3. 參數傳遞:電腦名/IP、網站描述 (ServerComment)、新路徑。
  4. 錯誤處理:VBScript 內 On Error Resume Next + 回傳值判斷;VC++ 端檢查 VARIANT 結果。

擴充應用:控制其他 IIS 屬性

參考 C:\Inetpub\AdminScripts\*.vbs 官方範例,只需修改 VBScript 函數內容:

  • 啟用/停用匿名存取:操作 AuthAnonymous、AuthFlags 屬性。
  • 設定預設文件:修改 DefaultDoc。
  • 建立/刪除虛擬目錄:Create/Delete 方法。
  • 應用程式池管理:IIS://.../W3SVC/AppPools。

優缺點權衡

優點缺點
程式碼極簡短,維護容易需目標機安裝 ScriptControl (通常預裝)
同一 VC++ 架構複用所有 IIS 管理功能效能較直接 COM 呼叫稍低 (管理操作可忽略)
VBScript 範例豐富,直接移植即用除錯較難 (建議先在 .vbs 檔測試再嵌入)

結語

「寫腳本、VC 執行」是操作 IIS/ADSI/COM 等複雜系統管理介面的極佳模式。將業務邏輯封裝在 VBScript,VC++ 僅負責載入執行與參數傳遞,實現關注點分離,大幅降低開發與維護成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved