Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 內建神器 Rundll32.exe 進階應用大全:控制面板快捷啟動、系統管理與程式開發實戰

編輯:XP 系統基礎知識

認識 Rundll32.exe:呼叫 DLL 的命令列橋樑

Rundll32.exe 是 Windows 內建工具,用途是「以命令列方式載入並執行 DLL(動態連結庫)中匯出的函式」。它讓我們無需撰寫程式,即可直接呼叫系統 DLL 內建的功能——開啟控制面板項目、管理硬體、操作印表機、甚至關機重啟。

  • Rundll32.exe:32 位元版(Windows 95/98/NT/2000/XP/2003/Vista/7/10/11 皆有)
  • Rundll.exe:16 位元版(僅 Win9x/NT 4.0 相容層需用)
  • 語法:rundll32.exe <DLL路徑>, <入口點函式名> [可選參數]

三大鐵律:

  1. DLL 路徑不可含空格(含空格請用短檔名,如 C:\Progra~1)
  2. DLL 與函式間的逗號 不可省略,否則靜默失敗
  3. 不可呼叫需傳回值的函式(如 GetUserName),只能呼叫 void 型函式

一、控制面板與系統設定快捷啟動(最實用類別)

下表整理最常用的控制面板項目,建議建立桌面捷徑或批次檔,一鍵直達:

功能命令列說明
控制面板主頁rundll32.exe shell32.dll,Control_RunDLL等同「開始→設定→控制面板」
輔助功能選項rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1鍵盤/聲音/顯示/滑鼠/一般 分頁直接跳轉(1~5)
新增硬體精靈rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1@1=新增硬體,@0=系統內容「一般」分頁
新增印表機精靈rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter直接啟動印表機安裝精靈
新增/移除程式rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1,,1=安裝/解除安裝,,,2=Windows 元件,,,3=啟動磁碟
日期/時間rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0,,0=日期時間,,,1=時區
顯示內容rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0,,0=桌面背景,,,1=螢幕保護,,,2=外觀,,,3=設定
字型資料夾rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder或 rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
滑鼠屬性rundll32.exe shell32.dll,Control_RunDLL main.cpl @0@0=滑鼠,@1=鍵盤(速度/語言),@2=印表機,@3=字型,@4=輸入法
遊戲控制器rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0,,0=一般,,,1=進階
多媒體/聲音rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0,,0=音訊,,,1=視訊,,,2=MIDI,,,3=CD 音樂,,,4=裝置;@1 直接開聲音
網路連線rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl開啟網路連線資料夾
電源選項rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl筆電/桌機電源管理
系統內容rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0,,0=一般,,,1=裝置管理員,,,2=硬體設定檔,,,3=效能
撥號/電話rundll32.exe shell32.dll,Control_RunDLL telephon.cpl撥號屬性/地區設定
主題/桌面佈景rundll32.exe shell32.dll,Control_RunDLL themes.cpl桌面主題設定
區域選項rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0,,0=地區,,,1=數字,,,2=貨幣,,,3=時間,,,4=日期
ODBC 資料來源rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl32 位元 ODBC 管理員
密碼/使用者帳號rundll32.exe shell32.dll,Control_RunDLL password.cpl舊版使用者帳號管理(XP/2003)

二、系統操作與硬體管理指令

功能命令列說明
強制關機rundll32.exe user.exe,ExitWindows立即關閉所有程式並關機(不等待)
強制重啟rundll32.exe user.exe,RestartWindows立即重啟
建立公文包rundll32.exe syncui.dll,Briefcase_Create桌面建立「我的公文包」
磁碟複製rundll32.exe diskcopy.dll,DiskCopyRunDll開啟磁碟複製對話框(軟碟時代遺物)
建立捷徑rundll32.exe appwiz.cpl,NewLinkHere %1%1 為目標路徑,可用於右鍵選單擴充
安裝螢幕保護rundll32.exe desk.cpl,InstallScreenSaver file.scr指定 .scr 檔並開啟屬性
列印 HTMLrundll32.exe mshtml.dll,PrintHTML "C:\path\file.html"無需開啟瀏覽器直接列印
撥號連線rundll32.exe rnaui.dll,RnaDial "連線名稱"直接撥號或顯示狀態
新增撥號連線rundll32.exe rnaui.dll,RnaWizard啟動新增連線精靈
格式化磁碟rundll32.exe shell32.dll,SHFormatDrive開啟格式化對話框(支援軟碟/USB)
開啟「打開方式」rundll32.exe shell32.dll,OpenAs_RunDLL "檔案完整路徑"為無關聯檔案指定開啟程式

三、程式開發整合:VB / C# / Delphi / C++ 呼叫範例

Rundll32 最大價值在於讓應用程式以極簡代碼調用系統內建 UI,避免繁複的 COM/Win32 API 宣告。

Visual Basic 6 / VBA

' 重啟電腦
Shell "rundll32.exe user.exe,RestartWindows"

' 開啟「新增/移除程式」
Shell "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1"

' 開啟顯示內容「螢幕保護」分頁
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1"

C# / .NET

using System.Diagnostics;

Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL powercfg.cpl");
// 等同 Process.Start("control.exe", "powercfg.cpl"),但 rundll32 更輕量

C++ (Win32 API)

// 使用 ShellExecute 同樣可呼叫 rundll32
ShellExecute(NULL, "open", "rundll32.exe", 
             "shell32.dll,Control_RunDLL sysdm.cpl,,1", 
             NULL, SW_SHOWNORMAL);

批次檔 / 命令提示字元捷徑建立


@echo off
:: 建立「關機」捷徑於桌面
echo Set oWS = WScript.CreateObject("WScript.Shell") > %temp%\createshortcut.vbs
echo sLinkFile = oWS.SpecialFolders("Desktop") ^& "\關機.lnk" >> %temp%\createshortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %temp%\createshortcut.vbs
echo oLink.TargetPath = "rundll32.exe" >> %temp%\createshortcut.vbs
echo oLink.Arguments = "user.exe,ExitWindows" >> %temp%\createshortcut.vbs
echo oLink.Description = "一鍵關機" >> %temp%\createshortcut.vbs
echo oLink.Save >> %temp%\createshortcut.vbs
cscript //nologo %temp%\createshortcut.vbs
del %temp%\createshortcut.vbs

四、進階技巧與冷知識

1. 直接開啟 .cpl 檔案(更標準的做法)

事實上,control.exe 才是官方建議的控制面板啟動器:


control.exe desk.cpl          // 顯示內容
control.exe desk.cpl,,1       // 直接跳到螢幕保護分頁
control.exe appwiz.cpl,,2     // Windows 元件
control.exe sysdm.cpl,,3      // 系統內容→效能

但 rundll32.exe shell32.dll,Control_RunDLL ... 在某些精簡版/PE 環境下 control.exe 缺失時仍能運作,兼容性更強。

2. 列舉所有可用的 Control_RunDLL 入口點

系統 DLL 中匯出的 Control_RunDLL 接受 cpl 檔名與分頁索引。若想探索未文件化的功能,可用 dumpbin /exports shell32.dll 或 Dependency Walker 查看匯出函式。

3. 結合「執行」對話框(Win+R)快速啟動

將常用命令建立為 .bat 或 .cmd 放入 PATH 目錄(如 C:\Windows),即可在「執行」直接輸入指令名稱啟動。例如建立 cpl.bat:


@rundll32.exe shell32.dll,Control_RunDLL %1.cpl %2 %3

之後 Win+R → cpl desk 1 即開啟螢幕保護設定。

4. 注意事項與常見坑

  • 參數含空格:路徑需加雙引號,如 rundll32.exe mshtml.dll,PrintHTML "D:\My Docs\test.html"
  • 權限問題:部分功能(如裝置管理員、系統內容)需管理員權限,請以「以系統管理員身分執行」開啟 CMD 再呼叫
  • 64 位元系統:C:\Windows\System32\rundll32.exe 為 64 位元,C:\Windows\SysWOW64\rundll32.exe 為 32 位元。呼叫 32 位元 DLL 時需明確指定 SysWOW64 版本
  • 惡意軟體濫用:病毒常用 rundll32.exe javascript:\..\mshtml,RunHTMLApplication 執行惡意腳本。若發現異常 rundll32.exe 進程(無參數、路徑非 System32、父進程可疑),請立即查殺

五、經典「關機/重啟捷徑」手動建立法(圖文補充)

  1. 桌面空白處右鍵 → 「新增」 → 「捷徑」
  2. 項目位置輸入:
    關機:rundll32.exe user.exe,ExitWindows
    重啟:rundll32.exe user.exe,RestartWindows
  3. 下一步 → 命名為「一鍵關機」/「一鍵重啟」 → 完成
  4. (可選)右鍵捷徑 → 「內容」 → 「更換圖示」 → 選擇 %SystemRoot%\System32\shell32.dll 中的電源/重啟圖示

結語

Rundll32.exe 是 Windows 系統層極簡、強大的「萬用鑰匙」。掌握其核心語法與常用 Control_RunDLL 參數表,能讓系統管理員、開發人員、進階使用者在無需編寫程式、無需翻選單的情況下,秒開任何控制面板項目、執行系統管理任務、整合進自動化腳本。建議將本文常用指令表匯出為備忘錄,或建立專屬工具箱批次檔,讓這把「內建神器」真正發揮事半功倍的效能。

Copyright © Windows教程網 All Rights Reserved