PDA

Показать полную графическую версию : [решено] Добавление и удаление в реестр


killapeps
12-08-2013, 15:46
Господа имеется проблемка, необходимо добавлять и удалять периодически некоторые параметры реестра
все они в архиве, хотелось бы все это делать через vbs скриптик, то есть каждое дейтвие по отдельности - всего 4 скрипта, но я не силен, выручайте

Iska
12-08-2013, 15:54
Powershell, VB Script, SQL and JavaScript - TechNet IT Pro's and Scripting Guys (http://gallery.technet.microsoft.com/scriptcenter/site/search?f%5B0%5D.Type=RootCategory&f%5B0%5D.Value=operatingsystem&f%5B0%5D.Text=Operating%20System&f%5B1%5D.Type=SubCategory&f%5B1%5D.Value=registry&f%5B1%5D.Text=Registry&f%5B2%5D.Type=ProgrammingLanguage&f%5B2%5D.Value=VBS&f%5B2%5D.Text=VB%20Script)
Registry Scripting using VBScript (http://www.activexperts.com/activmonitor/windowsmanagement/scripts/operatingsystem/registry/)

killapeps
12-08-2013, 19:22
Нашел то что мне нужно, вот кто бы объяснил как мне мои файлы реестра сюда прописать?

'==========================================================================
'
' NAME: Reg.vbs
'
' AUTHOR: Dennis C. Eijkelboom
' DATE : 23-12-2010
'
' SYNTAX:
' cscript reg.vbs <regfilepaths>
'
' EXAMPLE:
' cscript reg.vbs proxyserver.reg searchscopes.reg
'
'==========================================================================

Option Explicit

Dim FileSystemObject: Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim objWSHShell: Set objWSHShell = CreateObject("WScript.Shell")
Call Main
Set FileSystemObject = Nothing
Set objWSHShell = Nothing

Sub Main 'Process all registry export files that are passed through as commandline parameters
Const ForReading = 1
Const OpenAsUnicode = -1
Dim RegFile
Dim argument
For Each argument In WScript.Arguments
Set RegFile = FileSystemObject.OpenTextFile(argument,ForReading,,OpenAsUnicode)
ProcessRegFile RegFile
RegFile.Close
Set RegFile = Nothing
Next
End Sub

Sub ProcessRegFile(RegFile) 'Read through the registry file and write each registry value
Dim line: line = ""
Dim key: key = ""
Dim name: name = ""
Dim value: value = ""
While Not RegFile.AtEndOfStream
line = RegFile.ReadLine
If Left(line,1) = "[" Then 'key line
key = Mid(line,2,Len(line)-2)
ElseIf Left(line,1) = """" Then 'value line
line = Mid(line,2,Len(line)-1)
name = Left(line,InStr(line,"=")-2)
value = Mid(line,Len(name)+3)
If Len(key) > 0 And Len(name) > 0 And Len(value) > 0 Then
ProcessRegValue key,name,value
End If
End If
Wend
End Sub

Sub ProcessRegValue(key,name,value) 'Write the registry value under passed name and key
key = Replace(Replace(key,"HKEY_lOCAL_MACHINE","HKLM"),"HKEY_CURRENT_USER","HKCU")
If Left(value,6) = "dword:" Then
value = Mid(value,7)
Dim wordvalue: wordvalue = CLng("&H" & value)
objWSHShell.RegWrite key & "\" & name,wordvalue,"REG_DWORD"
Else
value = Replace(Mid(value,2,Len(value)-2),"\\","\")
objWSHShell.RegWrite key & "\" & name,value,"REG_SZ"
End If
End Sub

Iska
13-08-2013, 04:56
killapeps, не занимайтесь ерундой, я привёл Вам то, что нужно.

killapeps
13-08-2013, 18:45
Iska, я еще раз говорю я профан в vbs, не хотите не помогайте, я задаю нормальный вопрос, скрипт я вытащил из ссылки которую Вы прислали, но его структуру не понимаю, описания там нет

torauma
14-08-2013, 09:07
killapeps, Вы свою проблему решаете или ждете, что ее решит добрый дядя с форума? В найденом скрипте хоть пытались разобраться? Вот эти строчки
'==========================================================================
'
' NAME: Reg.vbs
'
' AUTHOR: Dennis C. Eijkelboom
' DATE : 23-12-2010
'
' SYNTAX:
' cscript reg.vbs <regfilepaths>
'
' EXAMPLE:
' cscript reg.vbs proxyserver.reg searchscopes.reg
'
'========================================================================== »
читали? Тут вроде бы не на VBS, а вполне человеческим языком все сказано.

killapeps
14-08-2013, 11:26
torauma,Представьте себе пытался в батник прописать и запустить
Вот такая ошибочка:
Reg.vbs(64, 9) Ошибка выполнения Microsoft VBScript: Недопустимый вызов или аргумент процедуры: 'Mid'

Дальше не знаю что и как делать

torauma
14-08-2013, 13:14
Вот и нужно было спрашивать, что с этой ошибкой делать, а не
вот кто бы объяснил как мне мои файлы реестра сюда прописать? »

В скрипте не предусмотрено удаление из реестра.
Достаточно изменить скрипт вот так:

'==========================================================================
'
' NAME: Reg.vbs
'
' AUTHOR: Dennis C. Eijkelboom
' DATE : 23-12-2010
'
' SYNTAX:
' cscript reg.vbs <regfilepaths>
'
' EXAMPLE:
' cscript reg.vbs proxyserver.reg searchscopes.reg
'
'==========================================================================

Option Explicit

Dim FileSystemObject: Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim objWSHShell: Set objWSHShell = CreateObject("WScript.Shell")
Call Main
Set FileSystemObject = Nothing
Set objWSHShell = Nothing

Sub Main 'Process all registry export files that are passed through as commandline parameters
Const ForReading = 1
Const OpenAsUnicode = -1
Dim RegFile
Dim argument
For Each argument In WScript.Arguments
Set RegFile = FileSystemObject.OpenTextFile(argument,ForReading,,OpenAsUnicode)
ProcessRegFile RegFile
RegFile.Close
Set RegFile = Nothing
Next
End Sub

Sub ProcessRegFile(RegFile) 'Read through the registry file and write each registry value
Dim line: line = ""
Dim key: key = ""
Dim name: name = ""
Dim value: value = ""
While Not RegFile.AtEndOfStream
line = RegFile.ReadLine
If Left(line,1) = "[" Then 'key line
key = Mid(line,2,Len(line)-2)
ElseIf Left(line,1) = """" Then 'value line
line = Mid(line,2,Len(line)-1)
name = Left(line,InStr(line,"=")-2)
value = Mid(line,Len(name)+3)
If Len(key) > 0 And Len(name) > 0 And Len(value) > 0 Then
ProcessRegValue key,name,value
End If
End If
Wend
End Sub

Sub ProcessRegValue(key,name,value) 'Write the registry value under passed name and key
key = Replace(Replace(key,"HKEY_lOCAL_MACHINE","HKLM"),"HKEY_CURRENT_USER","HKCU")
If Left(value,6) = "dword:" Then
value = Mid(value,7)
Dim wordvalue: wordvalue = CLng("&H" & value)
objWSHShell.RegWrite key & "\" & name,wordvalue,"REG_DWORD"
ElseIf value = "-" Then
objWSHShell.RegDelete key & "\" & name
Else
value = Replace(Mid(value,2,Len(value)-2),"\\","\")
objWSHShell.RegWrite key & "\" & name,value,"REG_SZ"
End If
End Sub

killapeps
14-08-2013, 13:57
Спасибо Вам torauma, но не все заработало, все же как то криво вытаскивает он параметры из рег файлов, решено было с помощью совета человека из другого сообщества использовать REG2EXE (http://sourceforge.net/projects/reg2exe/) (обходит политику системы блокировки реестра)
У меня все запускается из бат файла и она мне наиболее подошла :)




© OSzone.net 2001-2012