Имя: Пароль:
1C
 
VBScript и реестр
0 1Снечег
 
07.09.07
15:23
Подскажите как правильно считать с помощью конструкции WshShell.RegRead() значение параметра из ветки реестра "HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles\"

проблема в том что названия параметров там в виде "I:\1C_Base\"

то есть в результате получается следующее: WshShell.RegRead("HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles\I:\1C_Base\")
и при попытке случается ошибка (Err.Number=-2147024735, Err.Description="Неверная ссылка на корень в разделе реестра")

подскажите пожалуйста синтаксис, а то я уже всю голову сломал
1 DGorgoN
 
07.09.07
15:29
мыло скажи..
2 IUnknown
 
07.09.07
15:30
3 DGorgoN
 
07.09.07
15:32
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles\I:\1C_Base\ - загоняешь в переменную, и уже WshShell.RegRead(переменная)
4 DGorgoN
 
07.09.07
15:33
+ (3) попробуй..
5 1Снечег
 
07.09.07
15:36
(2) не, мне именно в VBScript нужно. боюсь что все-таки есть разница
6 IUnknown
 
07.09.07
15:40
там есть именно на VBScript

function vlGetListBase()


только ковычки надо будет по сокращать
7 1Снечег
 
07.09.07
15:40
у меня это сейчас так:

PathToListBases = "HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles\"

UnderTestPath = "I:\1C_Bases\Автосалон\v7\Бух\"

KeyBase = WshShell.RegRead(PathToListBases & UnderTestPath)

не работает
8 DGorgoN
 
07.09.07
15:42
(5) (3) не помогло?
9 DGorgoN
 
07.09.07
15:45
хм
10 DGorgoN
 
07.09.07
15:53
Const HKEY_CURRENT_USER = &H80000001
Set oRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\1C\1Cv7\7.7\Titles"
iRes = oRegProv.EnumValues(HKEY_CURRENT_USER, strKeyPath, arrValues)

MsgBox("база" & strpath,vbOK)
11 DGorgoN
 
07.09.07
15:57
Const HKEY_CURRENT_USER = &H80000001

Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

Set oRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

strKeyPath = "Software\1C\1Cv7\7.7\Titles"

iRes = oRegProv.EnumValues(HKEY_CURRENT_USER, strKeyPath, arrValues)

strpath = join(arrValues,";")

MsgBox "база" & strpath, vbOK
12 DGorgoN
 
07.09.07
15:58
arrValues - там список всех баз.. удачи..
13 DGorgoN
 
07.09.07
16:04
Книга знаний: Получение списка баз vb скриптом (краткий пример) добавил в КЗ как полный, простой и исчерпывающий пример..
14 1Снечег
 
07.09.07
16:15
блин, ладно, с тем что дали как-нибудь разберусь

но вообще мне список баз не нужен был, мне нужно было проверить конктретную базу
15 DGorgoN
 
07.09.07
16:21
(14) Ну так и воспользуйся (11)
16 1Снечег
 
07.09.07
16:23
(6)

правильно порезал?

а то все равно не пашет
17 DGorgoN
 
07.09.07
16:24
Const HKEY_CURRENT_USER = &H80000001

Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\1C\1Cv7\7.7\Titles"
iRes = oRegProv.EnumValues(HKEY_CURRENT_USER, strKeyPath, arrValues)
strpath = join(arrValues,";")

if instr(1,strPath,"ПУТЬ К ИСКОМОЙ БАЗЕ")>0 Then ' если нет в списке то добавим
MsgBox "Эта база уже зарегена!",vbOK
End If
18 1Снечег
 
07.09.07
16:25
(15) ага, спасиб

правда и тот способ пригодится потом
19 DGorgoN
 
07.09.07
16:25
(16) помогло или нет? Или тебе че-то другое надо было?
20 1Снечег
 
07.09.07
16:29
(19)блин, копипаст забыл сделать=) порезал вот так:

function strGetListBase()

   const RootKey = &H80000001
   set Reg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\." & "\root\default:StdRegProv")
   PathKey = "Software\1C\1Cv7\7.7\Titles"
   Reg.EnumValues RootKey, PathKey, Arr
   for x = LBound(Arr) to UBound(Arr)
       call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
       Answer = Answer & Arr(x) & Value
'        if x <> UBound(Arr) then Answer = Answer & "",""
   next
   
   Msg Answer

end function
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший