powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра?
37 сообщений из 37, показаны все 2 страниц
Как прочитать ветку реестра?
    #34262311
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо заранее.

В эпоху файлов ini была функция API под названием GetProfileString, которая могла читать и одну строчку, и целую секцию. На смену файлам ini пришел реестр, для его чтения есть объект WshShell и его метод RegRead. Однако этот метод читает только одно значение. А как прочитать целую ветку? Мне все равно, будет ли ответ одной строчкой в программе или циклом по значениям.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34262474
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SDKLONG RegEnumValue(

HKEY hKey, // handle of key to query
DWORD dwIndex, // index of value to query
LPTSTR lpValueName, // address of buffer for value string
LPDWORD lpcbValueName, // address for size of value buffer
LPDWORD lpReserved, // reserved
LPDWORD lpType, // address of buffer for type code
LPBYTE lpData, // address of buffer for value data
LPDWORD lpcbData // address for size of data buffer
); - это?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34262485
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, я работаю через JavaScript. Боюсь, что это не подойдет.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34262683
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам не пробовал, глянь .

зы. ты гугл курил ?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34262718
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
advСам не пробовал, глянь .
RegRead - это то, что я упомянул в вопросе.

advзы. ты гугл курил ?
Нет, но могу.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34262785
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч advСам не пробовал, глянь .
RegRead - это то, что я упомянул в вопросе.
торможу.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34263207
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч advзы. ты гугл курил ?
Нет, но могу.
Курил. Не вставляет.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34265947
Бабай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой вот совет попробую присоветовать.
скачай отсюда
http://www.jsware.net/jsware/scripts.php3#classpk

claspak.zip

и поразглядывай там RegCls.txt. метод: Public Function EnumSubKeys(RegPath, AList)
возможно эта техника тебя устроит.
на jscript придется самому переписать...
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34265967
Бабай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
идея метода там в том, что ветка экспортируется в файл командой
Код: plaintext
SH.Run "REGEDIT /E:A " & sTemp & " " & chr( 34 ) & sKey & chr( 34 ), , True 

а потом уже парсится этот файл.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266024
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого! Оно, конечно, спасибо, но... Я верю, что это будет работать, но я не могу себе позволить создавать файлы на диске у юзера Интернета. Слишком много ахиллесовых пят будет у моей программы. Неужели нет чего-то более прямого?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266082
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держи Саныч с барского плеча
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut=WScript.StdOut
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Alcohol Soft"
objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
For i= 0  to Ubound(arrValueNames)
	Wscript.Echo arrValueNames(i)
next 
Если ещё хочется вложения глянуть то вот

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
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
Извини, что на vbs, но думаю разберёшься
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266286
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaДержи Саныч с барского плеча
Много-много благодарю, но... Пытаюсь переложить на JavaScript.

Код: plaintext
var objReg = new ActiveXObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv");
Automation server can't create object.

Или я неправильно перекладываю?
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266325
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не неправильно, на яве тоже getobject
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266328
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отсюда качни доку
быстрее разберёшься
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266384
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Progaне неправильно, на яве тоже getobject
Код: plaintext
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv");
Та же ошибка...
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34266423
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga отсюда качни доку
быстрее разберёшься
Качнул. Про синтаксис winmgmts там ничего не видать (хотя ошибка у меня, похоже, именно в нем).
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34267799
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var HKEY_LOCAL_MACHINE = 0x80000002;
var strKeyPath,result;
var arrValueNames;
var arrValueTypes;
var strComputer = ".";
var StdOut=WScript.StdOut;
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\default:StdRegProv");
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34267823
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga
Код: plaintext
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\default:StdRegProv");

Вот-вот. Именно на это ошибка и выдается.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34267985
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Proga
Код: plaintext
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\default:StdRegProv");

Вот-вот. Именно на это ошибка и выдается.
значит не админ машины
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34267988
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня работает
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34268028
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Progaзначит не админ машины
А это обязательно??? Пардон-с, тогда мне этот способ не подойдет...
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34268210
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот конечный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var HKEY_LOCAL_MACHINE = 0x80000002;
var i;
var strKeyPath,result,oInParam,oOutParam;
var arrValueNames;
var arrValueTypes;
var strComputer = ".";
var StdOut=WScript.StdOut;
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\default:StdRegProv");
var strKeyPath = "Software\\Alcohol Soft";
oMethod = objReg.Methods_.Item("EnumValues");
oInParam = oMethod.InParameters.SpawnInstance_();
oInParam.hDefKey = HKEY_LOCAL_MACHINE;
oInParam.sSubKeyName = strKeyPath;
oOutParam = objReg.ExecMethod_(oMethod.Name, oInParam);
if( oOutParam.sNames == null ) 
	{WScript.Quit( 0 );}
else
{
aNames = oOutParam.sNames.toArray();
for (i= 0 ;i<aNames.length;i++)
{WScript.Echo(aNames[i]);}
}
А кроме админа политика безопасности некому не даёт в реестре шариться.
Можно ещё через Locator попробовать, но мне кажется получишь то же самое
По Локатору смотри здесь
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34268222
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавлю при использовании локатора есть тоже ограничения.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34268804
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaА кроме админа политика безопасности некому не даёт в реестре шариться.
Но упомянутый в моем вопросе RegRead у меня работает! И RegWrite тоже. Значит, либо неверно, что я не админ, либо неверно, что никому кроме админа.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #34270187
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Раньше я пробовал на работе, а сейчас попробовал дома. Та же ошибка и на той же строке.
...
Рейтинг: 0 / 0
Как прочитать ветку реестра?
    #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
37 сообщений из 37, показаны все 2 страниц
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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