Спрашивающий
vbs создание записи в реестре если ее не существует

Общие обсуждения
-
Доброго времени!
Задача: создать ключ в реестре (путь к базе 1с) ветка HKCU, расположение "Software\1C\1v7\7.7\Titles\", имя "расположение_базы_на диске" (и кто это придумал?), значение "название_базы"
Поискав немного на просторах msdn удалось сделать скрипт для содания заданного ключа, но без проверки его существования.
Сильно не пинайте, но направьте в нужную сторону.
вот что имею на данный момент:
Const HKEY_CURRENT_USER = &H80000001 Dim objRegistry
спасибо, заранее.
Dim mainkey,sPath,pPathstring,adString On Error Resume Next Set objRegistry = GetObject("winmgmts:root\default:StdRegProv") sPath = "SOFTWARE\1C\1Cv7\7.7\Titles\" pPathString = "c:\bases\profil" adString = "profil_base" mainkey = objRegistry.CreateKey(HKEY_CURRENT_USER, sPath) If (mainkey=0) And (Err.Number=0) Then Wscript.Echo "HKEY_CURERNT_USER\Software\1C\1Cv7\7.7\Titles\ created" End If mainkey = objRegistry.SetStringValue(HKEY_CURRENT_USER,sPath,pPathString,adString) If (mainkey = 0) And (Err.Number = 0) Then WScript.Echo "Write successful!" Else WScript.Echo "An error occurred. The return code is " & mainkey & "." End If4 марта 2011 г. 10:07
Все ответы
-
http://www.visualbasicscript.com/Function-to-check-if-registry-key-exists-m35278.aspx
http://technet.microsoft.com/en-us/library/ee176989.aspx
http://www.tek-tips.com/faqs.cfm?fid=5864
Function RegistryKeyExists(LNGHKEY, strKey, strSubkey) Const HKLM = &H80000002 Const HKCR = &H80000000 Const HKCU = &H80000001 Const HKUSERS = &H80000003 RegistryKeyExists = False Dim reg, aSubkeys, s, hkroot If LNGHKEY = "HKLM" Then hkRoot = HKLM If LNGHKEY = "HKCU" Then hkRoot = HKCU If LNGHKEY = "HKCR" Then hkRoot = HKCR If LNGHKEY = "HKUSERS" Then hkRoot = HKUSERS Set reg = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") reg.EnumKey hkroot, strKey, aSubkeys If Not IsNull(aSubkeys) Then For Each s In aSubkeys If lcase(s)=lcase(strSubkey) Then RegistryKeyExists = True Exit Function End If Next End If End Function Const HKEY_CURRENT_USER = &H80000001 Dim objRegistry Dim mainkey,sPath,pPathstring,adString On Error Resume Next Set objRegistry = GetObject("winmgmts:root\default:StdRegProv") sPath = "SOFTWARE\1C\1Cv7\7.7\Titles\" pPathString = "c:\bases\profil" adString = "profil_base" If RegistryKeyExists("HKCU","SOFTWARE\1C\1Cv7\7.7","Titles") = False Then mainkey = objRegistry.CreateKey(HKEY_CURRENT_USER, sPath) If (mainkey=0) And (Err.Number=0) Then Wscript.Echo "HKEY_CURERNT_USER\Software\1C\1Cv7\7.7\Titles\ created" End If mainkey = objRegistry.SetStringValue(HKEY_CURRENT_USER,sPath,pPathString,adString) If (mainkey = 0) And (Err.Number = 0) Then WScript.Echo "Write successful!" Else WScript.Echo "An error occurred. The return code is " & mainkey & "." End If Else WScript.Echo "RegKey exists" End If
4 марта 2011 г. 10:51Отвечающий -
Да, уж. В некоторых случаях быстрее и удобнее использовать старый добрый cmd-файл. Всего две строчки и все дела:
chcp 1251
reg Query "HKCU\Software\1C\1v7\7.7\Titles" /v "расположение_базы_на диске" || reg Add "HKCU\Software\1C\1v7\7.7\Titles" /v "расположение_базы_на диске" /t "REG_SZ" /d "Путь к 1С" /f4 марта 2011 г. 17:18 -
Проверки нет, - просто создается/перезаписывается запись в реестре. Командшелл в данном случае, конечно рулит, но хотелось бы добить этот скрипт. Я новичок в vbs, поэтому прошу вашего участия. Пробовал также использовать конструкцию:
, но безерезультатно(... StrValueName="C:\Bases\profil" strKeyPath = "Software\1C\1v7\7.7\Titles" Set objReg=GetObject("winmgmts:root\default:StdRegProv") strValueName = "UIHost" Return = objReg.GetExpandedStringValue(HKEY_CURRENT_USER,_ strKeyPath,strValueName,strValue) If strValue = "base_profil" Then Wscript.Echo strValue ...
5 марта 2011 г. 9:27 -
Вы определитесь,где у вас значение.
StrValueName="C:\Bases\profil" или в strValueName ="UIHost".
strKeyPath = "SOFTWARE\1C\1Cv7\7.7\Titles\"
strValueName = "c:\bases\profil"
adString = "profil_base"
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,sValue If sValue = adString Then Wscript.Echo "The registry key exist." Else mainkey = objRegistry.SetStringValue(HKEY_CURRENT_USER,sPath,pPathString,adString) If (mainkey = 0) And (Err.Number = 0) Then WScript.Echo "Write successful!" Else WScript.Echo "An error occurred. The return code is " & mainkey & "." End If End If
5 марта 2011 г. 10:22Отвечающий -
Прошу извинить меня за то, что ввел вас в заблуждение. Действительно strValueName="UIHost" взято из примера msdn, но не из скрипта, т.к. этого фрагмента кода в нем уже нет.5 марта 2011 г. 11:37
-
Спасибо за помощь.9 марта 2011 г. 6:51