2012-08-27 63 views
0

獲取註冊表值的類型,並刪除/創建一個註冊表值,*不*我需要創建一個腳本,依靠WMI,執行以下操作:VBScript中:使用WMI

  1. 檢查註冊表值存在,它具有所需的類型
  2. 如果該註冊表值存在,但一個錯誤的類型,將其刪除
  3. 如果註冊表值不存在,或者在第2步被刪除,用某種類型創建它
  4. 如果註冊表Y值存在和正確類型的,確保它的值是正確的

幾乎所有的註冊表操作的VBScript代碼段我在互聯網上依賴於WMI找到。由於某些原因,這是不可接受的。

對於如何在不依賴WMI的情況下操作註冊表,您有任何建議嗎?

+2

解析從REG.EXE/EXPORT命令行生成的REG文件的內容。 – Jay

+0

@Jay謝謝!如果你想寫你的評論作爲答案,我會很樂意爲你檢查... – pepoluan

+0

發佈了更多的信息。 – Jay

回答

0

VBScript/JScript從Windows腳本主機(WSH)確實具有WScript.Shell對象的註冊表功能,但它們僅限於讀取,寫入和刪除鍵/值。沒有函數來檢索註冊表項或值的存在,除非通過閱讀並檢查結果。用於檢索註冊表值類型的函數也不存在。

訪問註冊表的其他方法除了WMI對象外,是通過WScript.Shell.Exec函數使用打包的REG.EXE命令行工具。這通過使用QUERYADD,DELETE,IMPORTEXPORT命令參數來完成。運行REG.EXE以顯示使用情況摘要或REG.EXE QUERY /?,REG.EXE EXPORT /?等,以顯示命令使用情況的詳細信息。

QUERY命令的輸出將顯示值數據及其類型(如果存在)。 EXPORT命令也可以使用,但它會將結果保存在REG文件中。 REG.EXE工具的結果也可以在CMD.EXE的幫助下重定向到一個文件中。例如:

CMD.EXE /C REG.EXE QUERY "HKEY_CURRENT_USER\Control Panel\Cursors" > "reg output.txt" 

注意,output.txt的內容比REG文件的內容有所不同。 REG文件具有部分在Microsoft知識庫中的部分描述的標準格式KB310516

通過檢查REG.EXE工具的退出代碼,並解析其輸出或生成的REG文件,可以檢索註冊表值類型。如果可能並且性能是一個問題,應該使用可以使用WScript.Shell對象完成的註冊表操作。