Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Запись в реестр

Ответить
Настройки темы
VBS/WSH/JS - [решено] Запись в реестр

Аватара для charon

Старожил


Сообщения: 150
Благодарности: 13


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте. Не получается записать в реестр.
Такая конструкция работает
Код: Выделить весь код
Const HKEY_LOCAL_MACHINE = &H80000002 
strComputer = "." 
Set StdOut = WScript.StdOut 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "SYSTEM\EditType\DataType" 
strValueName = ";Data" 
iValues = Array(&H00,&H01,&H00,&H00)
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath 
oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath, strValueName,iValues
Поменял HKEY_LOCAL_MACHINE = &H80000002 на HKEY_CURRENT_USER = &H80000001 и путь другой - не хочет работать
Код: Выделить весь код
Const HKEY_CURRENT_USER = &H80000001 
strComputer = "." 
Set StdOut = WScript.StdOut 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer" 
strValueName = ";Data" 
iValues = Array(&H00,&H01,&H00,&H00)
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath 
oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath, strValueName,iValues
Что исправить чтобы работал?

Отправлено: 11:41, 17-12-2017

 

Аватара для yurfed

Ветеран


Сообщения: 20046
Благодарности: 3122

Профиль | Отправить PM | Цитировать


Цитата charon:
Поменял HKEY_LOCAL_MACHINE = &H80000002 на HKEY_CURRENT_USER = &H80000001 и путь другой - не хочет работать »
Зачем? Поменяйте на 100500.
Вас может просто туда не пускают? От админа? Может занято или нет такого Юзера?

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 12:02, 17-12-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата charon:
Что исправить чтобы работал? »
Для начала — добавить Option Explicit, дабы не попадать в подобные ситуации. Потом правильно научиться вызывать методы классов Wbem, чтобы не писать «не хочет работать», а самому получать и обрабатывать информацию — почему. Наконец, сделав всё это, посмотреть и удивиться — «А чего это я пытаюсь писать в никуда?» и поменять во втором скрипте HKEY_LOCAL_MACHINE на HKEY_CURRENT_USER в обоих вызовах методов.

Вот как примерно мог бы выглядеть данный скрипт
Код: Выделить весь код
Option Explicit

Const HKEY_CURRENT_USER = &H80000001

Dim objSWbemServicesEx


Dim strSubkey
Dim strValueName
Dim arrValues

Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default")
Dim objSWbemObjectEx

Set objSWbemObjectEx = objSWbemServicesEx.Get("StdRegProv")

strSubkey = "Software\Microsoft\Windows\CurrentVersion\Explorer"
strValueName = ";Data"
arrValues = Array(&H00,&H01,&H00,&H00)

If objSWbemObjectEx.CreateKey(HKEY_CURRENT_USER, strSubkey) = 0 Then
	If objSWbemObjectEx.SetBinaryValue(HKEY_CURRENT_USER, strSubkey, strValueName, arrValues) = 0 Then
	Else
		WScript.Echo "Can't set binary values"
	End If
Else
	WScript.Echo "Can't create key"
End If

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:21, 17-12-2017 | #3


Аватара для charon

Старожил


Сообщения: 150
Благодарности: 13

Профиль | Отправить PM | Цитировать


Iska, Спс. Работает. Полезу разбираться с методами и правами. Все же интересно почему winmgmts не захотел работать.

Отправлено: 20:59, 17-12-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата charon:
Все же интересно почему winmgmts не захотел работать. »
Потому что Вы путались осуществлять запись в реестр в несуществующий раздел: в Вашем коде HKEY_LOCAL_MACHINE был неопределён, и никакие значения ему не присваивались, потому приравнивался к нулю по умолчанию. Нелепая и типичная ошибка, избегать которой поможет обязательное использование Option Explicit. Я написал об этом же в предыдущем сообщении. А Вы как не видите.

Хотите анекдот из жизни на эту тему?

Отправлено: 05:43, 18-12-2017 | #5


Аватара для yurfed

Ветеран


Сообщения: 20046
Благодарности: 3122

Профиль | Отправить PM | Цитировать


Цитата Iska:
осуществлять запись в реестр в несуществующий раздел »
Цитата yurfed:
Может занято или нет такого Юзера? »
Вот и договорились


Цитата Iska:
Хотите анекдот из жизни на эту тему? »
давай

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 05:47, 18-12-2017 | #6


Аватара для charon

Старожил


Сообщения: 150
Благодарности: 13

Профиль | Отправить PM | Цитировать


Iska, Еще раз спс. Разобрался. Каюсь, был невниметелен. Определял HKEY_CURRENT_USER, а писал в HKEY_LOCAL_MACHINE. Естественно скрипт не хотел работать. После того как поправил winmgmts тоже работает.
Цитата Iska:
Хотите анекдот из жизни на эту тему? »
Хочу :-)

Отправлено: 14:58, 19-12-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата yurfed:
давай »
Цитата charon:
Хочу :-) »
Ну, что ж…


Во времена оны,…
когда трава была зеленее один мой коллега после распределения трудился по профилю на одном закрытом предприятии. В числе прочего, считали они там параметры траекторий на каком-то из аналогов PDP. После запуска очередного пакетного задания заниматься, кроме периодического контроля, было особо нечем, писали разные программки для собственного развлечения, в том числе кто-то написал и для игры в шахматы. Всё общение сводилось ко вводу ходов и приёму ответов. Для удобства «выцыганили» в местном клубе шахматный столик с комплектом фигур, поставили рядом с машиной, на нём и разыгрывали партии.

И был там один мужик, солидно в годах, как и положено — бывший военный на пенсии, трудился главным энергетиком. По словам — весьма неглупый человек, притом — электрик от бога, с электричеством на ты, умел и не гнушался при нужде сам подержать паяльник в руках, но от цифровой вычислительной техники был достаточно далёк в силу возраста.

Так вот, наблюдал он за этими молодыми ребятами, наблюдал, как они там в шахматы играются, и однажды у этого моего коллеги поинтересовался, как это, мол, ента железяка может играть в шахматы? Далее со слов коллеги: «Ну, вот, расписываю я ему, раскладываю всё по полочкам: про электроны, про диоды-транзисторы, про уровни тока, про отображаемые ими нулики-единички, про счётное устройство, про устройство управления, программы-алгоритмы и т.д. — вошёл в раж, уважаемый ведь человек, а как меня, молодого, слушает… Одним словом, заливаюсь перед ним соловьём… И тут он вдруг останавливает меня взмахом руки: «Эт-ладно… Ты мне лучше вот что скажи — как он доску видит?» Тут-то я и осел на месте».


Так вот и я — вроде бы рассказываю правильные вещи, но, поскольку не то, что ожидал услышать собеседник, то толку от моих рассказов выходит мало.

Отправлено: 16:15, 21-12-2017 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Запись в реестр

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Запись и Удаление данных в реестр O L E G Программирование и базы данных 1 07-06-2012 02:06
CMD/BAT - Определить путь и запись в реестр gen0m.rsw Скриптовые языки администрирования Windows 3 15-10-2010 15:23
Запись в реестр Win XP ShadowMas AutoIt 4 18-05-2009 15:15
запись в реестр Nealles Программирование и базы данных 1 30-12-2003 14:42
Запись программы в реестр Guest Microsoft Windows 95/98/Me (архив) 3 22-09-2003 10:11




 
Переход