Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Добавление и удаление в реестр (http://forum.oszone.net/showthread.php?t=266019)

killapeps 12-08-2013 15:46 2200354

Добавление и удаление в реестр
 
Вложений: 1
Господа имеется проблемка, необходимо добавлять и удалять периодически некоторые параметры реестра
все они в архиве, хотелось бы все это делать через vbs скриптик, то есть каждое дейтвие по отдельности - всего 4 скрипта, но я не силен, выручайте

Iska 12-08-2013 15:54 2200362

Powershell, VB Script, SQL and JavaScript - TechNet IT Pro's and Scripting Guys
Registry Scripting using VBScript

killapeps 12-08-2013 19:22 2200441

Нашел то что мне нужно, вот кто бы объяснил как мне мои файлы реестра сюда прописать?
Код:

'==========================================================================
'
' 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 2200614

killapeps, не занимайтесь ерундой, я привёл Вам то, что нужно.

killapeps 13-08-2013 18:45 2200922

Iska, я еще раз говорю я профан в vbs, не хотите не помогайте, я задаю нормальный вопрос, скрипт я вытащил из ссылки которую Вы прислали, но его структуру не понимаю, описания там нет

torauma 14-08-2013 09:07 2201195

killapeps, Вы свою проблему решаете или ждете, что ее решит добрый дядя с форума? В найденом скрипте хоть пытались разобраться? Вот эти строчки
Цитата:

Цитата 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 2201272

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

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

torauma 14-08-2013 13:14 2201359

Вот и нужно было спрашивать, что с этой ошибкой делать, а не
Цитата:

Цитата 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
'
'==========================================================================
 
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 2201393

Спасибо Вам torauma, но не все заработало, все же как то криво вытаскивает он параметры из рег файлов, решено было с помощью совета человека из другого сообщества использовать REG2EXE (обходит политику системы блокировки реестра)
У меня все запускается из бат файла и она мне наиболее подошла :)


Время: 10:41.

Время: 10:41.
© OSzone.net 2001-