Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра? / 25 сообщений из 37, страница 1 из 2
17.01.2007, 16:36:27
    #34262311
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Всем спасибо заранее.

В эпоху файлов ini была функция API под названием GetProfileString, которая могла читать и одну строчку, и целую секцию. На смену файлам ini пришел реестр, для его чтения есть объект WshShell и его метод RegRead. Однако этот метод читает только одно значение. А как прочитать целую ветку? Мне все равно, будет ли ответ одной строчкой в программе или циклом по значениям.
...
Рейтинг: 0 / 0
17.01.2007, 17:15:01
    #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
17.01.2007, 17:17:18
    #34262485
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
К сожалению, я работаю через JavaScript. Боюсь, что это не подойдет.
...
Рейтинг: 0 / 0
17.01.2007, 18:02:41
    #34262683
adv
adv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Сам не пробовал, глянь .

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

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

claspak.zip

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

а потом уже парсится этот файл.
...
Рейтинг: 0 / 0
18.01.2007, 17:51:42
    #34266024
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Ого! Оно, конечно, спасибо, но... Я верю, что это будет работать, но я не могу себе позволить создавать файлы на диске у юзера Интернета. Слишком много ахиллесовых пят будет у моей программы. Неужели нет чего-то более прямого?
...
Рейтинг: 0 / 0
18.01.2007, 18:05:10
    #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
18.01.2007, 18:58:30
    #34266286
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
ProgaДержи Саныч с барского плеча
Много-много благодарю, но... Пытаюсь переложить на JavaScript.

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

Или я неправильно перекладываю?
...
Рейтинг: 0 / 0
18.01.2007, 19:14:26
    #34266325
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
не неправильно, на яве тоже getobject
...
Рейтинг: 0 / 0
18.01.2007, 19:18:17
    #34266328
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
отсюда качни доку
быстрее разберёшься
...
Рейтинг: 0 / 0
18.01.2007, 19:53:41
    #34266384
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Progaне неправильно, на яве тоже getobject
Код: plaintext
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv");
Та же ошибка...
...
Рейтинг: 0 / 0
18.01.2007, 20:32:07
    #34266423
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Proga отсюда качни доку
быстрее разберёшься
Качнул. Про синтаксис winmgmts там ничего не видать (хотя ошибка у меня, похоже, именно в нем).
...
Рейтинг: 0 / 0
19.01.2007, 12:44:34
    #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
19.01.2007, 12:48:55
    #34267823
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Proga
Код: plaintext
var objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\default:StdRegProv");

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

Вот-вот. Именно на это ошибка и выдается.
значит не админ машины
...
Рейтинг: 0 / 0
19.01.2007, 13:20:18
    #34267988
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
у меня работает
...
Рейтинг: 0 / 0
19.01.2007, 13:31:39
    #34268028
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
Progaзначит не админ машины
А это обязательно??? Пардон-с, тогда мне этот способ не подойдет...
...
Рейтинг: 0 / 0
19.01.2007, 14:11:54
    #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
19.01.2007, 14:14:37
    #34268222
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
добавлю при использовании локатора есть тоже ограничения.
...
Рейтинг: 0 / 0
19.01.2007, 16:26:20
    #34268804
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
ProgaА кроме админа политика безопасности некому не даёт в реестре шариться.
Но упомянутый в моем вопросе RegRead у меня работает! И RegWrite тоже. Значит, либо неверно, что я не админ, либо неверно, что никому кроме админа.
...
Рейтинг: 0 / 0
20.01.2007, 23:39:10
    #34270187
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ветку реестра?
P.S. Раньше я пробовал на работе, а сейчас попробовал дома. Та же ошибка и на той же строке.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как прочитать ветку реестра? / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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