2008-09-24 116 views
40

是否可以通過.bat/.cmd腳本修改註冊表值(無論是字符串還是DWORD)?是否可以通過.bat/.cmd腳本修改註冊表項?

+0

正如@Shersha Fn指出的那樣,您必須是管理員才能使用REG.EXE。有沒有辦法做到這一點作爲非管理員,並避免「訪問被拒絕」的消息? – 2017-03-15 18:21:08

回答

37

可以使用REG命令。從http://www.ss64.com/nt/reg.html

Syntax: 

    REG QUERY [ROOT\]RegKey /v ValueName [/s] 
    REG QUERY [ROOT\]RegKey /ve --This returns the (default) value 

    REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f] 
    REG ADD [ROOT\]RegKey /ve [/d Data] [/f] -- Set the (default) value 

    REG DELETE [ROOT\]RegKey /v ValueName [/f] 
    REG DELETE [ROOT\]RegKey /ve [/f] -- Remove the (default) value 
    REG DELETE [ROOT\]RegKey /va [/f] -- Delete all values under this key 

    REG COPY [\\SourceMachine\][ROOT\]RegKey [\\DestMachine\][ROOT\]RegKey 

    REG EXPORT [ROOT\]RegKey FileName.reg 
    REG IMPORT FileName.reg 
    REG SAVE [ROOT\]RegKey FileName.hiv 
    REG RESTORE \\MachineName\[ROOT]\KeyName FileName.hiv 

    REG LOAD FileName KeyName 
    REG UNLOAD KeyName 

    REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/v ValueName] [Output] [/s] 
    REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/ve] [Output] [/s] 

Key: 
    ROOT : 
     HKLM = HKey_Local_machine (default) 
     HKCU = HKey_current_user 
     HKU = HKey_users 
     HKCR = HKey_classes_root 

    ValueName : The value, under the selected RegKey, to edit. 
       (default is all keys and values) 

    /d Data : The actual data to store as a "String", integer etc 

    /f  : Force an update without prompting "Value exists, overwrite Y/N" 

    \\Machine : Name of remote machine - omitting defaults to current machine. 
       Only HKLM and HKU are available on remote machines. 

    FileName : The filename to save or restore a registry hive. 

    KeyName : A key name to load a hive file into. (Creating a new key) 

    /S  : Query all subkeys and values. 

    /S Separator : Character to use as the separator in REG_MULTI_SZ values 
        the default is "\0" 

    /t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ 

    Output : /od (only differences) /os (only matches) /oa (all) /on (no output) 
+16

這個答案非常含糊,儘管它列出了所有可能性(這很好),但它不能清楚地回答OP的問題,不像@ nray的回答 – 2013-06-06 19:13:42

4

您可以創建一個.reg文件並調用它啓動它。您可以將註冊表的任何部分導出爲.reg文件以查看格式是什麼。

格式在這裏:

http://support.microsoft.com/kb/310516

這可以在任何Windows機器上,無需安裝其它軟件運行。

24

是的,你可以使用reg命令來編寫腳本。 例子:

reg add HKCU\Software\SomeProduct 
reg add HKCU\Software\SomeProduct /v Version /t REG_SZ /d v2.4.6 

這將產生關鍵HKEY_CURRENT_USER\Software\SomeProduct,並添加一個字符串值「v2.4.6」命名的「版本」,以這把鑰匙。

reg /?有詳細資料。

1

是的。您可以使用隨操作系統附帶的reg.exe來添加,刪除或查詢註冊表值。 Reg.exe沒有明確的修改命令,但可以通過刪除然後添加來完成。

1

除reg.exe之外,我強烈建議您還檢查一下powershell,它的註冊表處理能力非常強大。

+0

必須首先在客戶機上啓用PowerShell腳本通過使用`Set-ExecutionPolicy`。我有一個批處理腳本,它修改註冊表以將執行策略設置爲RemoteSigned。好處是用戶可以啓用並運行PowerShell腳本,而無需輸入任何命令。他們只需雙擊批處理文件即可。 – 2011-04-12 13:11:48

88

@Franci佩諾夫 - 修改是在意義上覆寫/f可能的,例如

reg add "HKCU\Software\etc\etc" /f /v "value" /t REG_SZ /d "Yes" 
+11

+1爲/ f 我已經爲此寫了幾個腳本,但沒有/ f,這真是太痛苦了;需要我在那裏運行腳本時鍵入「y + [return]」 – amyassin 2012-02-16 11:45:52

6

這是你如何修改註冊表,不用yes或no提示,不要忘記以管理員身份運行

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\etc\etc /v Valuename /t REG_SZ /d valuedata /f 

下面是一個真實的例子來將Internet Explorer設置爲默認瀏覽器

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice /v ProgId /t REG_SZ /d IE.HTTPS /f 

/f強制:強制的更新,而不提示 「值存在,覆蓋 Y/N」

/d數據:實際數據,以存儲爲 「字符串」,整數等

/v值:值的名稱例如ProgId

/t DataType:REG_SZ(默認值)| REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ

瞭解更多關於閱讀,設置或刪除註冊表項和值,保存和恢復從一個.reg文件。從here

相關問題