powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра?
12 сообщений из 37, страница 2 из 2
Как прочитать ветку реестра?
    #34270448
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел у Майкрософта пример, который почти работает.
http://msdn2.microsoft.com/en-us/library/aa394616.aspx

Стал адаптировать его под свою задачу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	var wsShell = new ActiveXObject("WScript.Shell");
	HKCU = 0x80000001;
	sRegPath = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Devices";
	oLoc = new ActiveXObject("WbemScripting.SWbemLocator");
	oSvc = oLoc.ConnectServer(null, "root\\default");
	oReg = oSvc.Get("StdRegProv");
	oMethod = oReg.Methods_.Item("EnumValues");
	oInParam = oMethod.InParameters.SpawnInstance_();
	oInParam.hDefKey = HKCU;
	oInParam.sSubKeyName = sRegPath;
	oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);
	aNames = oOutParam.sNames.toArray();
- это работает и заносит в массив aNames все имена ключей нужной ветки. Теперь хочу увидеть значения ключей:

Код: plaintext
1.
2.
3.
4.
5.
6.
	oMethod = oReg.Methods_.Item("GetMultiStringValue");
	oInParam = oMethod.InParameters.SpawnInstance_();
	oInParam.hDefKey = HKCU;
	oInParam.sSubKeyName = sRegPath;
	oInParam.sValueName = "Sources";
	oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);
	aNames = oOutParam.sValue.toArray();
- и вот тут что-то не идет. На последней строке кричит: Error: 'oOutParam.sValue' is null or not an object
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34270511
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то я мог бы читать значения и при помощи того же RegRead, но он обламывается, когда имя ключа содержит символ \. Пробовал брать имя в разные виды кавычек и скобок - не помогает.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34270555
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура, заработало! Вторая половина моего кода должна выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	for (i =  0 ; i < aNames.length; i++)
	{
		oMethod = oReg.Methods_.Item("GetStringValue");
		oInParam = oMethod.InParameters.SpawnInstance_();
		oInParam.hDefKey = HKCU;
		oInParam.sSubKeyName = sRegPath;
		oInParam.sValueName = aNames[i];
		oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);
		alert(aNames[i]+"="+oOutParam.sValue);
	}

Всем спасибо.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34310758
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого, какие люди к нам заглядывают!!!
Надо читать форум чаще!!!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34338971
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение. В Windows 98 не работает
new ActiveXObject("WbemScripting.SWbemLocator")
но можно пользоваться вот таким объектом:
<object ID='Locator' CLASSID='CLSID:76A64158-CB41-11D1-8B02-00600806D9B6'></object>
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прочитать ветку реестра?
    #35234843
la_vanille_ciel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как прочитать эту самую ветку и прочитанное положить в скрипт vbs, который копирует с сервера файлы туда, что прочитали???
Кстати, у меня не работает, пишет, что что-то не то с unbound (((
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35237063
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
la_vanille_cielА как прочитать эту самую ветку и прочитанное положить в скрипт vbs, который копирует с сервера файлы туда, что прочитали???
Не надо "класть в скрипт". Надо одним скриптом читать, заносить в переменную и копировать.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35238526
la_vanille_ciel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю, я имела в виду, как написать этот скрипт...вот у меня два фрагмента:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Adobe"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
If subkey = "Acrobat Reader" Then
find = True
Path_reg = strKeyPath & "\" & subkey
Exit For
End If
Next
If Not find Then
For Each subkey In arrSubKeys
If subkey = "Adobe Acrobat" Then
find = True
Path_reg = strKeyPath & "\" & subkey
Exit For
End If
Next
End If
If Not find Then
execute_programm_path = ""
Exit Function
Else
objReg.EnumKey HKEY_LOCAL_MACHINE, Path_reg, arrSubKeys
For Each subkey In arrSubKeys
Version_Acr = subkey
Next
End If
objReg.GetStringValue HKEY_LOCAL_MACHINE, Path_reg & "\" & Version_Acr & "\InstallPath\", "", dwValue
execute_programm_path = dwValue

- из этой темы

и своя часть скрипта, в котором неправильно задан путь копирования, а именно надо туда подставить вот этот вот с реестром:
Set fileFSO = CreateObject("Scripting.FileSystemObject")
source_file = "\\Apu18s\Shell\civil3D_2007_net\acad2004.lsp"
dest_file = "C:\Program Files\Autodesk Civil 3D 2007\Graph\acad.lsp"
fileFSO.CopyFile source_file, dest_file , true



Как их сделать вместе????? У меня совсем плохо со скриптами...я их второй день пытаюсь понять...с cmd еще ничего, а vbs для меня вообще темный лес...
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35238605
la_vanille_ciel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написала вот такое:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut=WScript.StdOut
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
Key = "SOFTWARE\Autodesk\AutoCAD\R 17.0\AcadLocation"
intRes = oReg.EnumKey(HKEY_LOCAL_MACHINE, Key, sNames)
intRes = oReg.GetStringValue(HKEY_LOCAL_MACHINE, Key&"\"&strSubKey, "DisplayName", Val1)

Set fileFSO = CreateObject("Scripting.FileSystemObject")
source_file = "\\Uzdp-files\share_shell\civil3D_2007_net\acad2004.lsp"
dest_file = intRes & "Graph\acad.lsp"
fileFSO.CopyFile source_file, dest_file , true



выдает ошибку, что путь не найден, я не понимаю, почему...
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35239608
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
la_vanille_cielвыдает ошибку, что путь не найден, я не понимаю, почему...
А визуально путь выглядит правильно?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35239725
Фотография Tom The Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
la_vanille_ciel
dest_file = intRes & "Graph\acad.lsp"

выдает ошибку, что путь не найден, я не понимаю, почему...

в пути акада есть пробелы?
что если так:
Код: plaintext
dest_file = CHR( 34 ) & intRes & CHR( 34 ) & "Graph\acad.lsp"
?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #35244518
la_vanille_ciel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, мне подсказали другой скрипт, вот смотрите:

On Error Resume Next
Dim WSh, FSO, P, P1, P2, P3, P4

Set WSh = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")


P = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.0\ACAD-201:419\AcadLocation")
PP = P & "\Graph\Support"
If FSO.FolderExists(PP) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName2004", PP, True


Теперь проблема, надо значение прочитанной ветки реестра записать и далее вывести в сообщении, как это сделать?
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]