Чтение и запись реестра Windows при помощи VBA

Узнай цену своей работы

Формулировка задачи:

Примеров в сети много, что-то немного не то, мне надо - например есть папка реестра HKEY_CURRENT_USER
в ней есть папка Software, сначала бы считать все папки этой папки Software, и всё что находится в ней, как? подскажите скрипт

Решение задачи: «Чтение и запись реестра Windows при помощи VBA»

textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font>
<font color="#00AA00">'<br></font>
<font color="#00AA00">'служит процедуре Считываем_реестр_папку_HKEY_CURRENT_USER_Software</font>
<font color="blue">Private</font> <font color="blue">Const</font> MAX_PATH <font color="blue">As</font> <font color="blue">Long</font> = <font color="darkblue"><b>260</b></font>
 
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_CLASSES_ROOT <font color="blue">As</font> <font color="blue">Long</font> = &H80000000
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_CURRENT_USER <font color="blue">As</font> <font color="blue">Long</font> = &H80000001
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_LOCAL_MACHINE <font color="blue">As</font> <font color="blue">Long</font> = &H80000002
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_USERS <font color="blue">As</font> <font color="blue">Long</font> = &H80000003
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_PERFORMANCE_DATA <font color="blue">As</font> <font color="blue">Long</font> = &H80000004
<font color="blue">Private</font> <font color="blue">Const</font> HKEY_CURRENT_CONFIG <font color="blue">As</font> <font color="blue">Long</font> = &H80000005
 
<font color="blue">Private</font> <font color="blue">Const</font> KEY_READ <font color="blue">As</font> <font color="blue">Long</font> = &H20019
 
<font color="blue">Private</font> <font color="blue">Const</font> ERROR_SUCCESS <font color="blue">As</font> <font color="blue">Long</font> = <font color="darkblue"><b>0</b></font>
 
<font color="blue">Private</font> <font color="blue">Type</font> FILETIME
    dwLowDateTime <font color="blue">As</font> <font color="blue">Long</font>
    dwHighDateTime <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">End</font> <font color="blue">Type</font>
 
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> RegEnumKeyEx Lib <font color="teal">"advapi32"</font> Alias <font color="teal">"RegEnumKeyExA"</font> _
    (<font color="blue">ByVal</font> hKey <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> dwIndex <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> lpName <font color="blue">As</font> <font color="blue">String</font>, _
    lpcbName <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> lpReserved <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> lpClass <font color="blue">As</font> <font color="blue">String</font>, _
    lpcbClass <font color="blue">As</font> <font color="blue">Long</font>, _
    lpftLastWriteTime <font color="blue">As</font> FILETIME) <font color="blue">As</font> <font color="blue">Long</font>
 
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> RegOpenKeyEx Lib <font color="teal">"advapi32.dll"</font> Alias <font color="teal">"RegOpenKeyExA"</font> ( _
    <font color="blue">ByVal</font> hKey <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> pSubKey <font color="blue">As</font> <font color="blue">String</font>, _
    <font color="blue">ByVal</font> ulOptions <font color="blue">As</font> <font color="blue">Long</font>, _
    <font color="blue">ByVal</font> samDesired <font color="blue">As</font> <font color="blue">Long</font>, phkResult <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="#00AA00">'<br></font>
<font color="#00AA00">'конец блока служащего процедуре Считываем_реестр_папку_HKEY_CURRENT_USER_Software</font>
    
 <font color="blue">Sub</font> Считываем_реестр_папку_HKEY_CURRENT_USER_Software()
 
    <font color="blue">Dim</font> dwIndex <font color="blue">As</font> <font color="blue">Long</font>
    <font color="blue">Dim</font> sTypeName <font color="blue">As</font> <font color="blue">String</font>
    <font color="blue">Dim</font> Все_программы <font color="blue">As</font> <font color="blue">String</font>
    <font color="blue">Dim</font> Программа <font color="blue">As</font> <font color="blue">String</font>
    <font color="blue">Dim</font> sSubkey <font color="blue">As</font> <font color="blue">String</font> * MAX_PATH
    <font color="blue">Dim</font> sClass <font color="blue">As</font> <font color="blue">String</font> * MAX_PATH
    <font color="blue">Dim</font> ft <font color="blue">As</font> FILETIME
    <font color="blue">Dim</font> lSubkey <font color="blue">As</font> <font color="blue">Long</font>
    <font color="blue">Dim</font> hKey <font color="blue">As</font> <font color="blue">Long</font>
    
    <font color="blue">If</font> RegOpenKeyEx(HKEY_CURRENT_USER, <font color="teal">"Software"</font>, <font color="darkblue"><b>0</b></font>, KEY_READ, hKey) <> ERROR_SUCCESS <font color="blue">Then</font> MsgBox$ <font color="teal">"В реестре не имеется папки HKEY_CURRENT_USER, Software"</font>: <font color="blue">Exit</font> <font color="blue">Sub</font>
    
    lSubkey = MAX_PATH
    Все_программы = <font color="teal">""</font>
    <font color="blue">Do</font> <font color="blue">While</font> RegEnumKeyEx(hKey, _
                          dwIndex, _
                          sSubkey, _
                          lSubkey, _
                          <font color="darkblue"><b>0</b></font>, sClass, _
                          MAX_PATH, ft) = ERROR_SUCCESS
                          Программа = Left(sSubkey, lSubkey)
        Debug.<font color="blue">Print</font> Программа
        lSubkey = MAX_PATH
        dwIndex = dwIndex + <font color="darkblue"><b>1</b></font>
        Все_программы = Все_программы & Программа & Chr(<font color="darkblue"><b>13</b></font>)
    <font color="blue">Loop</font>
MsgBox$ <font color="teal">"Закончено, в реестре, в папке HKEY_CURRENT_USER, Software находятся папки:"</font> & Chr(<font color="darkblue"><b>13</b></font>) & Все_программы & Chr(<font color="darkblue"><b>13</b></font>) & <font color="teal">"Всего: "</font> & dwIndex & <font color="teal">" шт."</font>
<font color="#00AA00">'Ворд находится в папке HKEY_CURRENT_USER, Software, Микрософт, Офис, Ворд</font>

<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы