winexec(Pchar('StrCommand'),sw_Show);
其中"StrCommand"代表以下命令之一(使用Windows中的運行不要加引號):
"rundll32 shell32,Control_RunDLL" - 運行控制面板
"rundll32 shell32,OpenAs_RunDLL" - 打開"打開方式"窗口
"rundll32 shell32,ShellAboutA Info-Box" - 打開"關于"窗口
"rundll32 shell32,Control_RunDLL desk.cpl" - 打開"顯示屬性"窗口
"rundll32 user,cascadechildwindows" - 層疊全部窗口
"rundll32 user,tilechildwindows" - 最小化所有的子窗口
"rundll32 user,repaintscreen" - 刷新桌面
"rundll32 shell,shellexecute Explorer" - 重新運行Windows Explorer
"rundll32 keyboard,disable" - 鎖寫鍵盤
"rundll32 mouse,disable" - 讓鼠標失效
"rundll32 user,swapmousebutton" - 交換鼠標按鈕
"rundll32 user,setcursorpos" - 設置鼠標位置為(0,0)
"rundll32 user,wnetconnectdialog" - 打開"映射網絡驅動器"窗口
"rundll32 user,wnetdisconnectdialog" - 打開"斷開網絡驅動器"窗口
"rundll32 user,disableoemlayer" - 顯示BSOD窗口, (BSOD) = Blue Screen Of Death, 即藍屏
"rundll32 diskcopy,DiskCopyRunDll" - 打開磁盤復制窗口
"rundll32 rnaui.dll,RnaWizard" - 運行"Internet連接向導", 如果加上參數"/1"則為silent模式
"rundll32 shell32,SHFormatDrive" - 打開"格式化磁盤(A)"窗口
"rundll32 shell32,SHExitWindowsEx -1" - 冷啟動Windows Explorer
"rundll32 shell32,SHExitWindowsEx 1" - 關機
"rundll32 shell32,SHExitWindowsEx 0" - 退當前用戶
"rundll32 shell32,SHExitWindowsEx 2" Windows9x 快速重啟
"rundll32 krnl386.exe,exitkernel" - 強行退出Windows 9x(無確認)
"rundll rnaui.dll,RnaDial "MyConnect" - 運行"網絡連接"對話框
"rundll32 msprint2.dll,RUNDLL_PrintTestPage" - 選擇打印機和打印測試頁
"rundll32 user,setcaretblinktime" - 設置光標閃爍速度
"rundll32 user, setdoubleclicktime" - 測試鼠標雙擊速度
"rundll32 sysdm.cpl,InstallDevice_Rundll" - 搜索非PnP設備
控制面板中的各項功能
winexec('rundll32.exe shell32.dll, Control_RunDLL', 9);
{輔助選項 屬性-鍵盤}
winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 1', 9);
{輔助選項 屬性-聲音}
winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 2', 9);
{輔助選項 屬性-顯示}
winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 3', 9);
{輔助選項 屬性-鼠標}
winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 4', 9);
{輔助選項 屬性-常規}
winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 5', 9);
{添加/刪除程序 屬性-安裝/卸載}
winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 1', 9);
{添加/刪除程序 屬性-Windows安裝程序}
winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 2', 9);
{添加/刪除程序 屬性-啟動盤}
winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 3', 9);
{顯示 屬性-背景}
winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 0', 9);
{顯示 屬性-屏幕保護程序}
winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 1', 9);
{顯示 屬性-外觀}
winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 2', 9);
{顯示 屬性-設置}
winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 3', 9);
{Internet 屬性-常規}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 0', 9);
{Internet 屬性-安全}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 1', 9);
{Internet 屬性-內容}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 2', 9);
{Internet 屬性-連接}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 3', 9);
{Internet 屬性-程序}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 4', 9);
{Internet 屬性-高級}
winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 5', 9);
{區域設置 屬性-區域設置}
winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 0', 9);
{區域設置 屬性-數字}
winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 1', 9);
{區域設置 屬性-貨幣}
winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 2', 9);
{區域設置 屬性-時間}
winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 3', 9);
{區域設置 屬性-日期}
winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 4', 9);
winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 0', 9);
winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 1', 9);
{鼠標 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL Main.cpl', 9);
{多媒體 屬性-音頻}
winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 0', 9);
{多媒體 屬性-視頻}
winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 1', 9);
{多媒體 屬性-MIDI}
winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 2', 9);
{多媒體 屬性-CD音樂}
winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 3', 9);
{多媒體 屬性-設備}
winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 4', 9);
{調制解調器 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL Modem.cpl', 9);
winexec('rundll32.exe shell32.dll, Control_RunDLL Netcpl.cpl', 9);
{密碼 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL Password.cpl', 9);
{掃描儀與數字相機 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL Sticpl.cpl', 9);
{系統 屬性-常規}
winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 0', 9);
{系統 屬性-設備管理器}
winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 1', 9);
{系統 屬性-硬件配置文件}
winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 2', 9);
{系統 屬性-性能}
winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 3', 9);
{日期/時間 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL timedate.cpl', 9);
{電源管理 屬性}
winexec('rundll32.exe shell32.dll, Control_RunDLL Powercfg.cpl', 9);
winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9);
關于調用后的判斷處理建議:
先聲明一個cardinal類型的變量RtnCardinal獲取返回值進行判斷如:
RtnCardinal := winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9);
返回值 可能原因
0 程序超出內存
ERROR_BAD_FORMAT 程序為一個非法的Win32.EXE程序
ERROR_FILE_NOT_FOUND 指定文件沒找到
ERROR_PATH_NOT_FOUND 指定路徑沒找到
使用方法:
點擊“開始-程式-Ms-Dos方式”,進入Dos視窗,然後鍵入"rundll32.exe user.exe,restartwindows",再按下回車鍵,這時你將看到,機器被重啟了!怎么樣,是不是很有趣?
當然,Rundll的功能絕不僅僅是重啟你的機器。其實,Rundll者,顧名思義,執行Dll也,它的功能就是以命令列的方式呼叫Windows的動態鏈結庫,Rundll32.exe與Rundll.exe的區別就在於前者是呼叫32位的鏈結庫,而後者是運用於16位的鏈結庫,它們的命令格式是:
RUNDLL.EXE ,,
這里要注意三點:1.Dll檔案名中不能含有空格,比如該檔案位於c:/Program Files/目錄,你要把這個路徑改成c:/Progra~1/;2.Dll檔案名與Dll入口點間的逗號不能少,否則程式將出錯并且不會給出任何資訊!3.這是最重要的一點:Rundll不能用來呼叫含返回值參數的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual Basic中,提供了一條執行外部程式的指令Shell,格式為:
Shell “命令列”
如果能配合Rundll32.exe用好Shell指令,會使您的VB程式擁有用其他方法難以甚至無法實現的效果:仍以重啟為例,傳統的方法需要你在VB工程中先建立一個模組,然後寫入WinAPI的聲明,最後才能在程式中呼叫。而現在只需一句:
Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便多了?
實際上,Rundll32.exe在呼叫各種Windows控制面板和系統選項方面有著獨特的優勢。下面,我就將本人在因特網上收集的有關Rundll的指令列舉如下(很有用的,能省去你很多呼叫Windows API的時間!!),供大家在程式設計中引用:
命令列: rundll32.exe shell32.dll,Control_RunDLL
功能: 顯示控制面板
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 顯示“控制面板-輔助選項-鍵盤”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 顯示“控制面板-輔助選項-聲音”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 顯示“控制面板-輔助選項-顯示”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 顯示“控制面板-輔助選項-滑鼠”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 顯示“控制面板-輔助選項-傳統”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 執行“控制面板-添加新硬體”向導。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 執行“控制面板-添加新印表機”向導。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 顯示 “控制面板-添加/刪除程式-安裝/卸載” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 顯示 “控制面板-添加/刪除程式-安裝Windows” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 顯示 “控制面板-添加/刪除程式-啟動盤” 面板。
命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一個新的“我的公文包”。
命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 顯示復制軟碟視窗
命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 顯示“建立快捷方式”的對話框,所建立的快捷方式的位置由%1參數決定。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 顯示“日期與時間”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 顯示“時區”選項視窗。
命令列: rundll32.exe rnaui.dll,RnaDial [某個撥號連接的名稱]
功能: 顯示某個撥號連接的撥號視窗。如果已經撥號連接,則顯示目前的連接狀態的視窗。
命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 顯示“新建撥號連接”向導的視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 顯示“顯示屬性-背景”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 顯示“顯示屬性-螢屏保護”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 顯示“顯示屬性-外觀”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 顯示顯示“顯示屬性-屬性”選項視窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 顯示Windows的“字體”檔案夾。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同樣是顯示Windows的“字體”檔案夾。
命令列: rundll32.exe shell32.dll,SHformatDrive
功能: 顯示格式化軟碟對話框。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 顯示“控制面板-游戲控制器-一般”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 顯示“控制面板-游戲控制器-進階”選項視窗。
命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文檔)
功能: 列印HTML文檔。
命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 顯示Microsoft Exchange一般選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 顯示“控制面板-滑鼠” 選項 。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 顯示 “控制面板-鍵盤屬性-速度”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 顯示 “控制面板-鍵盤屬性-語言”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 顯示Windows“印表機”檔案夾。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 顯示Windows“字體”檔案夾。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 顯示“控制面板-輸入法屬性-輸入法”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 執行“添加新調制解調器”向導。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 顯示“控制面板-多媒體屬性-音頻”屬性頁。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 顯示“控制面板-多媒體屬性-視頻”屬性頁。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 顯示“控制面板-多媒體屬性-MIDI”屬性頁。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 顯示“控制面板-多媒體屬性-CD音樂”屬性頁。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 顯示“控制面板-多媒體屬性-設備”屬性頁。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 顯示“控制面板-聲音”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 顯示“控制面板-網路”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 顯示ODBC32資料管理選項視窗。
命令列: rundll32.exe shell32.dll,OpenAs_RunDLL
功能: 顯示指定檔案(drive:/path/filename)的“打開方式”對話框。
命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 顯示“控制面板-密碼”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 顯示“控制面板-電源管理屬性”選項視窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 顯示Windows“印表機”檔案夾。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
功能: 顯示“控制面板-區域設置屬性-區域設置”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 顯示“控制面板-區域設置屬性-數字”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 顯示“控制面板-區域設置屬性-貨幣”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 顯示“控制面板-區域設置屬性-時間”選項視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 顯示“控制面板-區域設置屬性-日期”選項視窗。
命令列: rundll32.exe desk.cpl,InstallScreenSaver [螢屏保護檔案名]
功能: 將指定的螢屏保護檔案設置為Windows的屏保,并顯示螢屏保護屬性視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 顯示“控制面板-系統屬性-傳統”屬性視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 顯示“控制面板-系統屬性-設備管理器”屬性視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 顯示“控制面板-系統屬性-硬體配置檔案”屬性視窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 顯示“控制面板-系統屬性-性能”屬性視窗。
命令列: rundll32.exe user.exe,restartwindows
功能: 強行關閉所有程式并重啟機器。
命令列: rundll32.exe user.exe,exitwindows
功能: 強行關閉所有程式并關機。
命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 顯示“撥號屬性”選項視窗
命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 顯示“桌面主旨”選項面板
當然,不止是VisualBasic,象Delphi.VisualC++等其他程式設計語言也可以通過呼叫外部命令的方法來使用Rundll的這些功能,具體方法這里就不再詳細敘述了。靈活的使用Rundll,一定會使你的程式設計輕輕松松,達到事半功倍的效果!
巧用Rundll32安裝和卸載Windows程序
在Windows系統中安裝和卸載程序是件非常容易的事情,一般用戶通過安裝和卸載程序向導就能很輕松地完成。但安裝和卸載Windows程序還有些鮮為人知的小技巧,使用Rundll32命令安裝和卸載Windows程序就是其中之一,可能你從來還沒接觸過,下面我們就一起領略它的神奇功能吧!
提示:Rundll32.exe是 Windows系統提供的一個命令,
它用來調用32位的DLL函數(16位的DLL文件用Rundll.exe來調用。DLL文件是Windows的基礎,所有的API函數都是在DLL中實現的,它不能獨立運行,一般由進程加載并調用,運行DLL文件最簡單的方法是利用Rundll32.exe,它的命令格式是“Rundll32.exe 動態鏈接庫名 函數名 參數名”。
1.卸載微軟Java虛擬機
在Windows系統中,要想IE瀏覽器執行包含Java小程序的網頁,必須安裝微軟Java虛擬機(MSJVM),Windows 98/2000已經捆綁了MSJVM,Windows XP/2003中雖然已經剝離了微軟Java虛擬機,但還是可以手工安裝。不過,有個現實我們不得不面對:由于微軟和SUN公司的明爭暗斗,微軟已經停止對MSJVM的開發,因此很多用戶改用SUN公司提供的Java虛擬機。但微軟沒有提供MSJVM的卸載工具,使用Rundll32命令,我們可以輕松卸載MSJVM。
單擊“開始→運行”命令,在“運行”對話框中輸入“RunDll32 advpack.dll,LaunchINFSection java.inf,UnInstall”,回車后系統會打開“Microsoft VM uninstall”對話框,單擊“是(Y)”按鈕后,系統就會開始卸載微軟Java虛擬機,卸載完成后需要重新啟動系統。
接下來刪除“%systemroot%”(即Windows的安裝目錄,Windows 2000系統為 Winnt目錄,Windows XP/2003為Windows目錄)下的Java文件夾;“%systemroot%\inf”下的java.pnf文件,以及“%systemroot%\system32”下的jview.exe文件和wjview.exe文件。最后打開注冊表編輯器,依次展開[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\JavaVM]分支和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\JAVA_VM]分支,刪除這兩個分支下的所有子鍵。
提示:以上方法不適用Windows 98系統。
2.重新安裝Windows XP自帶的IE6.0
Windows系統的IE瀏覽器漏洞很多,最容易出現問題。有時無法解決,就只能重新安裝了。使用Rundll32命令可以很輕松地完成重新安裝工作。我們以重新安裝Windows XP中的IE6.0為例:
首先將Windows XP光盤插入光驅,然后單擊“開始→運行”命令,在“運行”對話框中輸入“Rundll32 setupapi,InstallHinfSection DefaultInstall 132 C:\windows\inf\ie.inf”命令,回車后系統會打開安裝進程對話框,開始重新安裝IE6.0。
提示:如果你的Windows XP系統不是安裝在C盤,請將 “C\Windows\Inf\Ie.inf” 修改為“%systemroot%\inf\ie.inf”。
3.卸載Windows Messenger
卸載Windows Messenger的方法很多,最常用的就是修改“Sysoc.inf”文件,但此方法比較復雜,使用Rundll32命令能很輕松完成卸載:
首先要確保已經關閉了Outlook和IE等Windows自帶的組件,然后單擊“開始→運行”,在“運行”對話框中輸入“RunDll32 advpack.dll,LaunchINFSection %windir%\inf\msmsgs.inf,BLC.Remove”命令,回車后系統會打開一個卸載對話框,單擊“是(Y)”按鈕后,系統就開始卸載Windows Messenger 程序。
以上只是簡單介紹如何使用Rundll32命令卸載和安裝Windows程序的幾個實例,還有很多Windows程序的安裝和卸載可以使用此方法,就不再詳細介紹了,請大家慢慢體會。
轉載(http://blog.china-pub.com/more.asp?name=anstan&id=11612)