![]() |
![]() |
![]() |
|
Чтение данных из реестра | ☑ | ||
---|---|---|---|---|
0
D_E_S_131
14.05.10
✎
11:36
|
С помощью WScript.Shell могу прочитать значение ветки реестра. Как-нибудь можно сделать тоже самое, но на другом компьютере из сети?
|
|||
1
shuhard
14.05.10
✎
11:40
|
(0) лисапед не мой
Set WshShell = CreateObject("WScript.Shell") const HKEY_LOCAL_MACHINE = &H80000002 On Error Resume Next 'тут задаем имя ЦЕЛЕВОГО компьютера: compname = "it3" 'Подключаемся к удаленному On Error Resume Next 'подключение к WMI Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compname &"\root\default:StdRegProv") If Err.Number <> 0 Then WshShell.LogEvent 1,"Подключение к WMI "& Name &" ошибка "& Err.Number & ": " & Err.Description ' WScript.Quit End If On error goto 0 'То есть мы получили массив GetValue oReg.GetBinaryValue HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","DigitalProductId",GetValue 'То есть мы получили массив GetValue WScript.Echo "Ключ Windows: " & GetKey(GetValue) Function GetKey(byval p) pc="BCDFGHJKMPQRTVWXY2346789" For i=0 To 28 a=0 For j=0 To 14 a=p(66-j)+a*256 p(66-j)=(a\24) And 255 a=a Mod 24 Next ProductKey = Mid(pc,a+1,1) & ProductKey If (((i+2) Mod 6)=0) And (i<28) Then i=i+1 ProductKey = "-" & ProductKey End If Next GetKey = ProductKey End Function |
|||
2
D_E_S_131
14.05.10
✎
12:13
|
Это VB-скрипт? Я силами 1С локальные значения читаю. Думал, что "этими же силами" я и удаленно получу эти значения.
|
|||
3
shuhard
14.05.10
✎
12:20
|
(2) это пример доступа к реестру удаленной машины средствами WMI
оборочивай во что удобно |
|||
4
D_E_S_131
14.05.10
✎
13:58
|
"Во что угодно" упирается стразу в "GetObject" - такое на 1С не катит...
|
|||
5
shuhard
14.05.10
✎
14:18
|
(4) поиск по мисте, первая строка:
СИМ=ПолучитьCOMОбъект("winmgmts:\\.\Root\CIMv2"); Фильтр=СИМ.Get("__EventFilter").SpawnInstance_(); Фильтр.Name="MonitorPrintJob"; Фильтр.QueryLanguage="WQL"; Фильтр.Query="SELECT * FROM __InstanceCreationEvent WITHIN "+ИнтервалОпроса+" WHERE TargetInstance ISA 'Win32_PrintJob'"; Фильтр.Put_(); Потребитель=СИМ.Get("LogFileEventConsumer").SpawnInstance_(); Потребитель.Name="LogPrintJob"; Потребитель.FileName=ФайлЖурнала; Потребитель.Text="Дата/время: %TargetInstance.StartTime%, Принтер: %TargetInstance.Name%, Документ: %TargetInstance.Document%, Пользователь: %TargetInstance.Owner%, ВсегоСтраниц: %TargetInstance.TotalPages%"; Потребитель.Put_(); Фильтр=СИМ.Get("__EventFilter.Name=""MonitorPrintJob"""); Потребитель=СИМ.Get("LogFileEventConsumer.Name=""LogPrintJob"""); Связь=СИМ.Get("__FilterToConsumerBinding").SpawnInstance_(); Связь.Filter=Фильтр.Path_; Связь.Consumer=Потребитель.Path_; Связь.Put_(); |
|||
6
D_E_S_131
14.05.10
✎
15:04
|
Получилось, только нужны права локального админа на том компе, где хочешь реестр прочитать.
Реестр = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\test-bm8\root\default:StdRegProv"); ЗначениеРеестра = ""; Реестр.GetStringValue(2147483650, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{45FCC729-7789-479D-89A6-CE1AC809ADCA}", "InstallSource", ЗначениеРеестра); Сообщить("" + ЗначениеРеестра); |
|||
7
shuhard
14.05.10
✎
15:15
|
(6) и это правильно
нефига без прав по реестру шарить |
|||
8
D_E_S_131
14.05.10
✎
15:33
|
shuhard, спасибо за "наводку".
|
|||
9
shuhard
14.05.10
✎
15:36
|
(8) ОК
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |