IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Вопрос программерам VBS
Guitar_east
сообщение Jul 13 2010, 10:41
Сообщение #1


Продвинутый
****

Группа: Moderators
Сообщений: 252
Регистрация: 21.4.2005
Из: -
Пользователь №: 102
Имя: Boris'ka
Пол: Мужской



Есть часть крипта, которая добавляет 16-ричное значение в ключ реестра к уже существуюющему значению:

CODE
sKeyPath = RegistryFolder & "9207f3e0a3b11019908b08002b2a56c2\"
oReg.getBinaryValue HKEY_CURRENT_USER,sKeyPath, "01023d01",Backup
Dim oldLength
oldLength = UBound(Backup)
ReDim Preserve Backup(oldLength+16)
Backup(oldLength+1) = &He8
Backup(oldLength+2) = &Hcb
Backup(oldLength+3) = &H48
Backup(oldLength+4) = &H86
Backup(oldLength+5) = &H9c
Backup(oldLength+6) = &H39
Backup(oldLength+7) = &H54
Backup(oldLength+8) = &H45
Backup(oldLength+9) = &Had
Backup(oldLength+10) = &He1
Backup(oldLength+11) = &H3e
Backup(oldLength+12) = &H3c
Backup(oldLength+13) = &H1c
Backup(oldLength+14) = &H80
Backup(oldLength+15) = &Hd1
Backup(oldLength+16) = &H54
oReg.SetBinaryValue HKEY_CURRENT_USER, sKeyPath, "01023d01", Backup


А теперь вопрос знатокам, как сделать так, чтобы выполнялась проверка на существующие значения и, в случае уже заведомо существующего значения в этом ключе, ничего не добавлялось?
В данный момент если запустить полный скрипт несколько раз (выкладывать его не буду, потому что очень большой, кому надо, скину лично), то значение это добавится несколько раз, что не есть комильфо.


--------------------
Тот наилучший над всеми, кто всякое дело способен
Сам обсудить и заранее предвидеть - что выйдет из дела.
Чести достоин и тот, кто хорошим советам внимает.
то же не смыслит и сам ничего и чужого совета
В толк не берет - человек пустой и негодный.
Go to the top of the page
 
+Quote Post
Lost-One
сообщение Jul 19 2010, 12:37
Сообщение #2


Любопытный
***

Группа: Members
Сообщений: 176
Регистрация: 21.4.2005
Из: А вот тут вот..
Пользователь №: 79
Пол: Мужской



не совсем помню и знаю синтаксис функций, но по логике получаем что
oReg.getBinaryValue HKEY_CURRENT_USER,sKeyPath, "01023d01",Backup
функция ищет "01023d01" и сохраняет значение в Backup.
Затем мы что-то делаем с Backup и сохраняем.

А что нам мешает найти то что мы уже изменили перед записью ?
Например так (мой кусок кода в закомментирован "//"):

CODE
sKeyPath = RegistryFolder & "9207f3e0a3b11019908b08002b2a56c2\"
oReg.getBinaryValue HKEY_CURRENT_USER,sKeyPath, "01023d01",Backup
Dim oldLength
oldLength = UBound(Backup)
ReDim Preserve Backup(oldLength+16)
Backup(oldLength+1) = &He8
Backup(oldLength+2) = &Hcb
Backup(oldLength+3) = &H48
Backup(oldLength+4) = &H86
Backup(oldLength+5) = &H9c
Backup(oldLength+6) = &H39
Backup(oldLength+7) = &H54
Backup(oldLength+8) = &H45
Backup(oldLength+9) = &Had
Backup(oldLength+10) = &He1
Backup(oldLength+11) = &H3e
Backup(oldLength+12) = &H3c
Backup(oldLength+13) = &H1c
Backup(oldLength+14) = &H80
Backup(oldLength+15) = &Hd1
Backup(oldLength+16) = &H54

//
// oReg.getBinaryValue HKEY_CURRENT_USER,sKeyPath, Backup ,Backup2 // Попытаемся найти то что надо.
// if (Backup <> Backup2) // Если не нашли запишем, иначе ничего не делаем.
// {oReg.SetBinaryValue HKEY_CURRENT_USER, sKeyPath, "01023d01", Backup}
//



--------------------
The Victory Favours Neither Righteus Nor The Wicked. It Favours The Prepared !
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17th October 2019 - 13:13