Shunze 學園 >電腦資訊學系 >吃軟不吃硬 > 《分享》使用vbscript修改註冊機碼 哈囉,還沒有註冊或者登入。請你[註冊|登入]
« 上一篇主題 下一篇主題 » 顯示成列印模式 | 增加到我的最愛
發表新主題 發表回覆
作者
主題
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2380

shunze 離線
《分享》使用vbscript修改註冊機碼引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

最近公司中毒頻傳,每次中毒都要一個一個去檢查註冊機碼,修正內容...
有沒有辦法透過批次檔或是什麼工具來快速達成呢?


就目前順子了解,透過 vbscript 來編輯註冊機碼是個不錯的方法。
不過,在編寫vbscript之前,您最好有一點程式概念,這樣會比較容易上手。

編寫vbscript很簡單,只要打開記事本就可以編輯程式內容。
編寫好後,再將檔案儲存為副檔名 vbs 的檔案就可以。
執行時,只要滑鼠連點兩下這個*.vbs就可以運行程式中的vbscript程式。


要利用vbscript來編輯註冊機碼,首先我們必需產生一個註冊機碼物件變數WSHShell。
語法如下:

Dim WSHShell
Set WSHShell=Wscript.CreateObject("Wscript.Shell")

物件產生後,我們就可以利用它來編輯註冊機碼。

在註冊機碼中有五個主要的鍵結構。
其中三個主要鍵的稱較長,所以有如下的縮寫對應。
HKEY_CURRENT_USER → HKCU
HKEY_LOCAL_MACHINE → HKLM
HKEY_CLASSES_ROOT → HKCR
HKEY_USERS (沒有縮寫對應)
HKEY_CURRENT_CONFIG (沒有縮寫對應)

編寫程式時,可以直接以其縮寫來代替∼


編輯註冊機碼不外三個主要目的:新增修改刪除註冊機碼中的機碼或鍵值。

其中,新增和修改的語法同樣都是RegWrite。
在該機碼或鍵值存在的情況下,RegWrite會被視為修改;
相反的,若無該機碼或鍵值,RegWrite會以新增的方式加入其內容。

新增機碼的語法如下:
WSHShell.RegWrite "HKCU\MyRegKey\", "Top level key"

 意思是在HKEY_CURRENT_USER\的跟徑下,加入一個新機碼MyRegKey,資料內容為Top level key。
 要注意的是,路徑的結尾一定要有反斜線“ \ ”。
 不加反斜線會變成新增/修改鍵值而不是機碼,這是絕對不能忽略的!


新增/修改鍵值的語法如下:
WSHShell.RegWrite "HKCU\MyRegKey\Entry", 2, "REG_DWORD"

 意思是在HKEY_CURRENT_USER\MYRegKey\中,加入或修改一個型態為DWORD,值為2的機碼Entry。

 所有可用型態代碼如下:
 字串值 → REG_SZ
 二進位值 → REG_BINARY
 DWORD值 → REG_DWORD
 多字串值 → REG_MULTI_SZ
 可擴充字串值 → REG_DWORD_BIG_ENDIAN



刪除機碼的語法如下:
WSHShell.RegDelete "HKCU\MyRegKey\"

 意思是在HKEY_CURRENT_USER\下,刪除名稱MyRegKey的機碼。
 要注意的是,路徑的結尾一定要有反斜線“ \ ”才是刪除機碼;
 不然會變成刪除鍵值喔!


刪除鍵值的語法如下:
WSHShell.RegDelete "HKCU\MyRegKey\Entry"

 意思是在HKEY_CURRENT_USER\MYRegKey\下,刪除名為Entry的鍵值。


最後,script中被建立的物件WSHShell不要忘了在程式結束後釋放它喔∼
Set WSHShell=nothing


在幾個主要的 新增/修改/刪除 機碼/鍵值 的語法都了解後,
剩下的就看使用者如何來應用囉∼


本文完整範例如下:
Dim WSHShell
Set WSHShell=Wscript.CreateObject("Wscript.Shell")
WSHShell.RegWrite "HKCU\MyRegKey\", "Top level key"
WSHShell.RegWrite "HKCU\MyRegKey\Entry", 2, "REG_DWORD"
WSHShell.RegDelete "HKCU\MyRegKey\Entry"
WSHShell.RegDelete "HKCU\MyRegKey\"
WSHShell.Popup "新增、刪除 機碼/鍵值 完成!"
Set WSHShell=nothing


由於執行後新增的機碼及鍵值都被刪除,本例執行過後是看不出任何變化的。
有與趣的人客,可以自行試試喔∼


不過,我認為以WSHShell物件來編輯註冊機碼還有一個很大的問題存在。
那就是在鍵值名稱中如果有“\”存在,斜線字元會被視路徑字元,而無法正確編輯該鍵值。
例如在HKCU\MyRegKey\下,嘗試新增一個名為c:\windows\system32\cmd.exe的鍵值;
你會發現遇到很大的挫折...

這個問題找了整個下午還是沒有解答!?
真是失敗中的失敗...



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2007-05-10, 11:53 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
  « 上一篇主題 下一篇主題 »
發表新主題 發表回覆
跳到:

Powered by: Burning Board 1.1.1 2001 WoltLab GbR