Quantcast
Viewing all articles
Browse latest Browse all 1298

Re : Setting Registry Key in pre-deployment does not work

just use the VBSCRIPT and replace your variables to suit.. add it to deployment package and execute it prior update

  1. Option Explicit
  2. '~ On Error Resume Nex
  3. RequireAdmin

  4. Dim objReg
  5. Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

  6. RegWrite "HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration", "UpdateUrl", "REG_SZ", "\\servername\share$\CC"

  7. Function RegWrite(reg_keyname, reg_valuename,reg_type,ByVal reg_value)
  8. Dim aRegKey, Return
  9. aRegKey = RegSplitKey(reg_keyname)
  10. If IsArray(aRegKey) = 0 Then
  11. RegWrite = 0
  12. Exit Function
  13. End If

  14. Return = RegWriteKey(aRegKey)
  15. If Return = 0 Then
  16. RegWrite = 0
  17. Exit Function
  18. End If

  19. Select Case reg_type
  20. Case "REG_SZ"
  21. Return = objReg.SetStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)
  22. Case "REG_EXPAND_SZ"
  23. Return = objReg.SetExpandedStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)
  24. Case "REG_BINARY"
  25. If IsArray(reg_value) = 0 Then reg_value = Array()
  26. Return = objReg.SetBinaryValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)

  27. Case "REG_DWORD"
  28. If IsNumeric(reg_value) = 0 Then reg_value = 0
  29. Return = objReg.SetDWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)

  30. Case "REG_MULTI_SZ"
  31. If IsArray(reg_value) = 0 Then
  32. If Len(reg_value) = 0 Then
  33. reg_value = Array()
  34. Else
  35. reg_value = Array(reg_value)
  36. End If
  37. End If
  38. Return = objReg.SetMultiStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)

  39. 'Case "REG_QWORD"
  40. 'Return = oReg.SetQWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value)
  41. Case Else
  42. RegWrite = 0
  43. Exit Function
  44. End Select

  45. If (Return <> 0) Or (Err.Number <> 0) Then
  46. RegWrite = 0
  47. Exit Function
  48. End If
  49. RegWrite = 1
  50. End Function

  51. Function RegWriteKey(RegKeyName)
  52. Dim Return
  53. If IsArray(RegKeyName) = 0 Then
  54. RegKeyName = RegSplitKey(RegKeyName)
  55. End If

  56. If (IsArray(RegKeyName) = 0) Or (UBound(RegKeyName) <> 1) Then
  57. RegWriteKey = 0
  58. Exit Function
  59. End If

  60. Return = objReg.CreateKey(RegKeyName(0),RegKeyName(1))
  61. If (Return <> 0) Or (Err.Number <> 0) Then
  62. RegWriteKey = 0
  63. Exit Function
  64. End If
  65. RegWriteKey = 1
  66. End Function

  67. Function RegDelete(reg_keyname, reg_valuename)
  68. Dim Return,aRegKey
  69. aRegKey = RegSplitKey(reg_keyname)
  70. If IsArray(aRegKey) = 0 Then
  71. RegDelete = 0
  72. Exit Function
  73. End If

  74. Return = objReg.DeleteValue(aRegKey(0),aRegKey(1),reg_valuename)
  75. If (Return <> 0) And (Err.Number <> 0) Then
  76. RegDelete = 0
  77. Exit Function
  78. End If
  79. RegDelete = 1
  80. End Function

  81. Function RegDeleteKey(reg_keyname)
  82. Dim Return,aRegKey
  83. aRegKey = RegSplitKey(reg_keyname)
  84. If IsArray(aRegKey) = 0 Then
  85. RegDeleteKey = 0
  86. Exit Function
  87. End If

  88. 'On Error Resume Next
  89. Return = RegDeleteSubKey(aRegKey(0),aRegKey(1))
  90. 'On Error Goto 0
  91. If Return = 0 Then
  92. RegDeleteKey = 0
  93. Exit Function
  94. End If
  95. RegDeleteKey = 1
  96. End Function

  97. Function RegDeleteSubKey(strRegHive, strKeyPath)
  98. Dim Return,arrSubkeys,strSubkey
  99.     objReg.EnumKey strRegHive, strKeyPath, arrSubkeys
  100.     If IsArray(arrSubkeys) <> 0 Then
  101.         For Each strSubkey In arrSubkeys
  102.             RegDeleteSubKey strRegHive, strKeyPath & "\" & strSubkey
  103.         Next
  104.     End If

  105. Return = objReg.DeleteKey(strRegHive, strKeyPath)
  106. If (Return <> 0) Or (Err.Number <> 0) Then
  107. RegDeleteSubKey = 0
  108. Exit Function
  109. End If
  110. RegDeleteSubKey = 1
  111. End Function

  112. Function RegSplitKey(RegKeyName)
  113. Dim strHive, strInstr, strLeft
  114. strInstr=InStr(RegKeyName,"\")
  115. If strInstr = 0 Then Exit Function
  116. strLeft=left(RegKeyName,strInstr-1)

  117. Select Case strLeft
  118. Case "HKCR","HKEY_CLASSES_ROOT" strHive = &H80000000
  119. Case "HKCU","HKEY_CURRENT_USER" strHive = &H80000001
  120. Case "HKLM","HKEY_LOCAL_MACHINE" strHive = &H80000002
  121. Case "HKU","HKEY_USERS" strHive = &H80000003
  122. Case "HKCC","HKEY_CURRENT_CONFIG" strHive = &H80000005
  123.   Case Else Exit Function
  124. End Select

  125.     RegSplitKey = Array(strHive,Mid(RegKeyName,strInstr+1))
  126. End Function

  127. Function RequireAdmin()
  128. Dim reg_valuename, WShell, Cmd, CmdLine, I

  129. GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")_
  130. .EnumValues &H80000003, "S-1-5-19\Environment",  reg_valuename
  131. If IsArray(reg_valuename) <> 0 Then
  132. RequireAdmin = 1
  133. Exit Function
  134. End If

  135. Set Cmd = WScript.Arguments
  136. For I = 0 to Cmd.Count - 1
  137. If Cmd(I) = "/admin" Then
  138. Wscript.Echo "To script you must have administrator rights!"
  139. 'RequireAdmin = 0
  140. 'Exit Function
  141. WScript.Quit
  142. End If
  143. CmdLine = CmdLine & Chr(32) & Chr(34) & Cmd(I) & Chr(34)
  144. Next
  145. CmdLine = CmdLine & Chr(32) & Chr(34) & "/admin" & Chr(34)

  146. Set WShell= WScript.CreateObject( "WScript.Shell")
  147. CreateObject("Shell.Application").ShellExecute WShell.ExpandEnvironmentStrings(_
  148. "%SystemRoot%\System32\WScript.exe"),Chr(34) & WScript.ScriptFullName & Chr(34) & CmdLine, "", "runas"
  149. WScript.Quit
  150. End Function


Viewing all articles
Browse latest Browse all 1298

Trending Articles