Update registry using VBS

后端 未结 2 1038
星月不相逢
星月不相逢 2021-01-22 03:39

I\'m trying to update the legal caption on our PCs using a VBScript. So far, I\'ve been able to read values but I can\'t seem to get it to write any values. I don\'t get an erro

相关标签:
2条回答
  • 2021-01-22 04:27

    Your script seems to be bug-less. However, launched by cscript 28416995.vbs returns next error (where 22 = WshShell.RegWrite line):

    28416995.vbs(22, 1) WshShell.RegWrite: Invalid root in registry key "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\legalnoticecaption".

    It's not invalid root, it's something like access denied rather because writing to HKLM requires elevated privileges (or run as administrator).

    Note:

    • You should change LegalNoticeText value together with LegalNoticeCaption one.
    • Under the HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ registry key there both values reside as well. For this case (if a computer is not connected to a domain or with group policy disabled) should work next script.

    Run as administrator:

    option explicit
    On Error Goto 0
    Dim wshShell
    Dim strResult, strMessage, strWelcome, strWinLogon, strWinLog_2, strWinLTxt
    strResult=Wscript.ScriptName
    
    ' Set the string values
    strWinLTxt = "legalnoticetext"
    strWelcome = "legalnoticecaption"
    strMessage = "did this work"
    
    strWinLogon = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"
    strWinLog_2 = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\"
    
    ' Create the Shell object
    Set wshShell = CreateObject("WScript.Shell")
    
    'Display string Values
    ' continue execution if requested registry values not present 
    On Error Resume Next
    strResult = strResult & vbNewLine & "Existing Caption Policies: " _
      & wshShell.RegRead(strWinLog_2 & strWelcome)
    strResult = strResult & vbNewLine & "Existing Text Policies: " _
      & wshShell.RegRead(strWinLog_2 & strWinLTxt)
    On Error Goto 0
    strResult = strResult & vbNewLine & "Existing Caption Winlogon: " _
      & wshShell.RegRead(strWinLogon & strWelcome)
    strResult = strResult & vbNewLine & "Existing Text Winlogon: " _
      & wshShell.RegRead(strWinLogon & strWinLTxt)
    strResult = strResult & vbNewLine
    strResult = strResult & vbNewLine & "key to update: " & strWelcome
    strResult = strResult & vbNewLine & "key value to enter: " & strMessage
    
    
    ' the crucial command in this script - rewrite the registry
    wshShell.RegWrite strWinLogon & strWelcome, strMessage, "REG_SZ"
    wshShell.RegWrite strWinLogon & strWinLTxt, UCase( strMessage), "REG_SZ"
    
    ' Did it work?
    strResult = strResult & vbNewLine
    strResult = strResult & vbNewLine _
      & "new key Capt. value: " & wshShell.RegRead(strWinLogon & strWelcome)
    strResult = strResult & vbNewLine _
      & "new key Text value: " & wshShell.RegRead(strWinLogon & strWinLTxt)
    Wscript.Echo strResult 
    set wshShell = Nothing
    
    0 讨论(0)
  • 2021-01-22 04:41

    For me your code run perfect. For other user that want details over this i recommend this site: http://ss64.com/vb/regread.html and ss64.com/vb/regwrite.html Both links detail exactly the procedure that you create.

    0 讨论(0)
提交回复
热议问题