使用批處理重新啟動計算機
導讀:
今天在新聞組看到suichuanxian朋友回了一個帖子(地址在OXfUmTgWFHA.2256@TK2MSFTNGP14.phx.gbl),帖子原文如下:提問:請問各位大蝦,在批處理裡面怎麼模擬Enter鍵的事件?也就是說我想用批處理來代替人
工的回車或者空格鍵?因為我的一些程式在關閉的時候,提示是否結束,如果選在
“是”以後,程式關閉了,系統才能夠成功重啟,否則不理他的話,系統就不能夠完成
重啟的動作。謝謝各位大蝦。
回答:把以下內容用記事本儲存為bat檔案就可以了,如reboot.bat,執行它就會自動重新啟
動。
@echo off
setlocal
cd/d %temp%
echo [version] > reboot.inf
set inf=InstallHinfSection DefaultInstall
echo signature=$chicago$ >> reboot.inf
echo [defaultinstall] >> reboot.inf
rundll32 setupapi,%inf% 1 %temp% eboot.inf
del reboot.inf
呵呵,看到這個帖子,又讓我回想起用inf解鎖regedit風行的年代。意興之餘就說說這個指令碼的原理好了。其實這裡面用到的關鍵一句是RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 1 %temp% eboot.inf這裡的格式是RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection 關於Windows Rundll and Rundll32 Interface的用法,請參考 http://support.microsoft.com/kb/164787/zh-cn ,之前我也寫過rundll32用法的一個例子 http://gnaw0725.blogdriver.com/gnaw0725/259894.htmlsetupapi在這裡載入 InstallHinfSection功能項。關於此api其他export部分,用exescope或者編譯工具都可以很容易查到。(BTW:在winXP及以後版本,setupapi的執行將會隨之產生一個setupapi.log,它將會紀錄當前環境下安裝的裝置、servicepack以及hotfix,詳細內容請參考 http://www.microsoft.com/whdc/driver/install/setupapilog.mspx)<section> 這裡配合INF使用 InstallHinfSection, 關於 INF安裝的其他功能項請參考 INF File Processing Functions http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/SetupAPI_95233d19-2970-409d-8b44-de661cbf68ae.xml.asp<mode> 是一個組合值,它的組合序列如下:
<path> 指定INF檔案的路徑,這裡要使用絕對路徑。 這個用法適用於幾乎所有的客戶端作業系統,但這裡的 <mode> 一般不推薦賦值為 1 ,應該寫為 128+1=129 ,否則可能在某些環境下執行出現問題,不會重新啟動。這裡既然說到重新啟動系統,其實還可以用vbs來做,也只用一句話就夠了CreateObject("WScript.Shell").SendKeys "^{ESC}ur"但一般不推薦這樣寫,因為winxp登入方式有歡迎螢幕,也有非歡迎螢幕的登陸,對於後者這樣寫就不管用了,就要這樣寫CreateObject("WScript.Shell").SendKeys "^{ESC}u{DOWN}~"這裡有點技巧的就是 SendKeys,關於 SendKeys的用法,請參考 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemwindowsformssendkeysclasssendtopic.asp ,這裡就不詳述了。之前我也曾寫過一個類似的例子,見於 http://gnaw0725.blogdriver.com/gnaw0725/358142.html但由於windows註冊鍵值對於上次關機狀態的記憶,連這個按鍵的順序也未必如此,所以除非您為特定的環境定製的指令碼,一般對於通用的環境建議還是老老實實來strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!" & _
strComputer & " ootcimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
本文轉自
http://gnaw0725.blogbus.com/logs/4888543.html
今天在新聞組看到suichuanxian朋友回了一個帖子(地址在OXfUmTgWFHA.2256@TK2MSFTNGP14.phx.gbl),帖子原文如下:提問:請問各位大蝦,在批處理裡面怎麼模擬Enter鍵的事件?也就是說我想用批處理來代替人
工的回車或者空格鍵?因為我的一些程式在關閉的時候,提示是否結束,如果選在
“是”以後,程式關閉了,系統才能夠成功重啟,否則不理他的話,系統就不能夠完成
重啟的動作。謝謝各位大蝦。
回答:把以下內容用記事本儲存為bat檔案就可以了,如reboot.bat,執行它就會自動重新啟
動。
@echo off
setlocal
cd/d %temp%
echo [version] > reboot.inf
set inf=InstallHinfSection DefaultInstall
echo signature=$chicago$ >> reboot.inf
echo [defaultinstall] >> reboot.inf
rundll32 setupapi,%inf% 1 %temp% eboot.inf
del reboot.inf
呵呵,看到這個帖子,又讓我回想起用inf解鎖regedit風行的年代。意興之餘就說說這個指令碼的原理好了。其實這裡面用到的關鍵一句是RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 1 %temp% eboot.inf這裡的格式是RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection 關於Windows Rundll and Rundll32 Interface的用法,請參考 http://support.microsoft.com/kb/164787/zh-cn ,之前我也寫過rundll32用法的一個例子 http://gnaw0725.blogdriver.com/gnaw0725/259894.htmlsetupapi在這裡載入 InstallHinfSection功能項。關於此api其他export部分,用exescope或者編譯工具都可以很容易查到。(BTW:在winXP及以後版本,setupapi的執行將會隨之產生一個setupapi.log,它將會紀錄當前環境下安裝的裝置、servicepack以及hotfix,詳細內容請參考 http://www.microsoft.com/whdc/driver/install/setupapilog.mspx)<section> 這裡配合INF使用 InstallHinfSection, 關於 INF安裝的其他功能項請參考 INF File Processing Functions http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/SetupAPI_95233d19-2970-409d-8b44-de661cbf68ae.xml.asp<mode> 是一個組合值,它的組合序列如下:
Value | Description |
0 | 系統提供INF |
128 | 將安裝檔案的預設路徑設定為當前INF路徑。此為典型設定。 |
+0 | 不重新啟動計算機 |
+1 | 所有情況下都重新啟動計算機 |
+2 | 如果需要重新啟動,始終詢問使用者 |
+3 | 如果必要不經使用者許可直接重新啟動計算機 |
+4 | 如果需要重新啟動計算機,在啟動前提交使用者許可 |
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!" & _
strComputer & " ootcimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
本文轉自
http://gnaw0725.blogbus.com/logs/4888543.html
相關文章
- sql server 重新啟動計算機失敗SQLServer計算機
- 超越批處理的世界:流計算101
- 移動計算機處理技術不復存在計算機
- 開啟windows批處理大門Windows
- MongoDB for Windows使用批處理檔案啟動閃退之空格惹的禍MongoDBWindows
- 計算機處理器結構計算機
- 設定Oralce啟動和停止的批處理檔案
- windows10系統啟動管理器提示修復計算機如何處理Windows計算機
- 批處理開啟和關閉OracleOracle
- 計算機啟動過程計算機
- windows主機批處理命令檢查網路卡網路自動重啟網路卡Windows
- 更新計算機處理器微碼計算機
- Windows批處理學習(二)——批處理(3)薦Windows
- 【大資料】離線批處理計算MapReduce | 複習筆記大資料筆記
- 批處理框架框架
- JDBC 批處理JDBC
- 碎片批處理
- 批處理命令
- 批處理實現自動ftp功能FTP
- Windows使用批處理給手機批量安裝apk檔案WindowsAPK
- 計算機組成與設計(4)-----處理器計算機
- Windows自動使用管理員許可權執行bat批處理,手動選擇啟停服務WindowsBAT
- Java如何使用實時流式計算處理?Java
- windows批處理之一:字串處理Windows字串
- PXE 和 計算機網路啟動計算機網路
- 計算機系統的啟動概述計算機
- 計算機啟動過程詳解計算機
- Windows批處理命令Windows
- 批處理命令大全
- 批處理壓縮
- 批處理----學習
- DOS 批處理命令
- 批處理 自動修改 IP 地址(轉載)
- (SQLServer除錯)無法啟動T-SQL除錯。未能連線到計算機 “.”。異常處理SQLServer除錯計算機
- 用 bat 批處理命令啟動 Android Studio 自帶模擬器BATAndroid
- 使用bat批處理命令打包maven專案BATMaven
- 解決SQL Server 2008安裝時提示:重新啟動計算機 失敗SQLServer計算機
- Hammerspoon for Mac自動化批處理軟體Mac