<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FWindows_API%2FRegistry</id>
		<title>VBA/Excel/Access/Word/Windows API/Registry - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FWindows_API%2FRegistry"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Windows_API/Registry&amp;action=history"/>
		<updated>2026-04-06T00:08:59Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Windows_API/Registry&amp;diff=1945&amp;oldid=prev</id>
		<title> в 16:33, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Windows_API/Registry&amp;diff=1945&amp;oldid=prev"/>
				<updated>2010-05-26T16:33:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:33, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Windows_API/Registry&amp;diff=1946&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Windows_API/Registry&amp;diff=1946&amp;oldid=prev"/>
				<updated>2010-05-26T12:48:32Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Reads a value from the Windows Registry==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Private Declare Function RegOpenKeyA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sSubKey As String, ByRef hkeyResult As Long) As Long&lt;br /&gt;
Private Declare Function RegCloseKey Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long) As Long&lt;br /&gt;
Private Declare Function RegSetValueExA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sValueName As String, ByVal dwReserved As Long, ByVal dwType As Long, ByVal sValue As String, ByVal dwSize As Long) As Long&lt;br /&gt;
Private Declare Function RegCreateKeyA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sSubKey As String, ByRef hkeyResult As Long) As Long&lt;br /&gt;
Private Declare Function RegQueryValueExA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sValueName As String, ByVal dwReserved As Long, ByRef lValueType As Long, ByVal sValue As String, ByRef lResultLen As Long) As Long&lt;br /&gt;
Function GetRegistry(Key, Path, ByVal ValueName As String)&lt;br /&gt;
    Dim hKey As Long&lt;br /&gt;
    Dim lValueType As Long&lt;br /&gt;
    Dim sResult As String&lt;br /&gt;
    Dim lResultLen As Long&lt;br /&gt;
    Dim ResultLen As Long&lt;br /&gt;
    Dim x, TheKey As Long&lt;br /&gt;
    Select Case UCase(Key)&lt;br /&gt;
        Case &amp;quot;HKEY_CLASSES_ROOT&amp;quot;: TheKey = &amp;amp;H80000000&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_USER&amp;quot;: TheKey = &amp;amp;H80000001&lt;br /&gt;
        Case &amp;quot;HKEY_LOCAL_MACHINE&amp;quot;: TheKey = &amp;amp;H80000002&lt;br /&gt;
        Case &amp;quot;HKEY_USERS&amp;quot;: TheKey = &amp;amp;H80000003&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_CONFIG&amp;quot;: TheKey = &amp;amp;H80000004&lt;br /&gt;
        Case &amp;quot;HKEY_DYN_DATA&amp;quot;: TheKey = &amp;amp;H80000005&lt;br /&gt;
    End Select&lt;br /&gt;
    &lt;br /&gt;
    If RegOpenKeyA(TheKey, Path, hKey) &amp;lt;&amp;gt; 0 Then _&lt;br /&gt;
        x = RegCreateKeyA(TheKey, Path, hKey)&lt;br /&gt;
    &lt;br /&gt;
    sResult = Space(100)&lt;br /&gt;
    lResultLen = 100&lt;br /&gt;
    &lt;br /&gt;
    x = RegQueryValueExA(hKey, ValueName, 0, lValueType, _&lt;br /&gt;
    sResult, lResultLen)&lt;br /&gt;
        &lt;br /&gt;
    Select Case x&lt;br /&gt;
        Case 0: GetRegistry = Left(sResult, lResultLen - 1)&lt;br /&gt;
        Case Else: GetRegistry = &amp;quot;Not Found&amp;quot;&lt;br /&gt;
    End Select&lt;br /&gt;
    &lt;br /&gt;
    RegCloseKey hKey&lt;br /&gt;
End Function&lt;br /&gt;
Sub TestIt()&lt;br /&gt;
    RootKey = &amp;quot;hkey_current_user&amp;quot;&lt;br /&gt;
    Path = &amp;quot;software\microsoft\office\9.0\common\autocorrect&amp;quot;&lt;br /&gt;
    RegEntry = &amp;quot;path&amp;quot;&lt;br /&gt;
    MsgBox GetRegistry(RootKey, Path, RegEntry), vbInformation, _&lt;br /&gt;
        Path &amp;amp; &amp;quot;\RegEntry&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using RegQueryValueEx to Read Registry Information==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Declare Function RegQueryValueEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegQueryValueExA&amp;quot; (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long&lt;br /&gt;
Declare Function RegOpenKeyEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegOpenKeyExA&amp;quot; (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long&lt;br /&gt;
Public Declare Function RegCloseKey Lib &amp;quot;advapi32.dll&amp;quot; (ByVal hKey As Long) As Long&lt;br /&gt;
Sub cmdRead()&lt;br /&gt;
    Dim strValue As String * 256&lt;br /&gt;
    Dim lngRetval As Long&lt;br /&gt;
    Dim lngLength As Long&lt;br /&gt;
    Dim lngKey As Long&lt;br /&gt;
    If RegOpenKeyEx(HKEY_CURRENT_USER, &amp;quot;Your_Key_Name&amp;quot;, 0, KEY_QUERY_VALUE, lngKey) Then&lt;br /&gt;
    End If&lt;br /&gt;
    lngLength = 256&lt;br /&gt;
    &amp;quot;Retrieve the value of the key&lt;br /&gt;
    lngRetval = RegQueryValueEx( _&lt;br /&gt;
        lngKey, &amp;quot;YourValueName&amp;quot;, 0, 0, ByVal strValue, lngLength)&lt;br /&gt;
    MsgBox Left(strValue, lngLength)&lt;br /&gt;
    &amp;quot;Close the key&lt;br /&gt;
    RegCloseKey (lngKey)&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using RegSetValueEx to Write Information to the Registry==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Declare Function RegSetValueEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegSetValueExA&amp;quot; (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long&lt;br /&gt;
Declare Function RegOpenKeyEx Lib &amp;quot;advapi32.dll&amp;quot; Alias &amp;quot;RegOpenKeyExA&amp;quot; (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long&lt;br /&gt;
Public Declare Function RegCloseKey Lib &amp;quot;advapi32.dll&amp;quot; (ByVal hKey As Long) As Long&lt;br /&gt;
Private Sub cmdWrite_Click()&lt;br /&gt;
    Dim strValue As String&lt;br /&gt;
    Dim strKeyName As String&lt;br /&gt;
    Dim lngRetval As Long&lt;br /&gt;
    Dim lngLength As Long&lt;br /&gt;
    Dim lngKey As Long&lt;br /&gt;
    strKeyName = &amp;quot;KeyName&amp;quot; &amp;amp; vbNullString&lt;br /&gt;
    If RegOpenKeyEx(HKEY_CURRENT_USER, strKeyName, 0, KEY_WRITE, lngKey) Then&lt;br /&gt;
    End If&lt;br /&gt;
    strValue = &amp;quot;YourValue&amp;quot; &amp;amp; vbNullString&lt;br /&gt;
    lngLength = Len(&amp;quot;YourValue&amp;quot;) + 1&lt;br /&gt;
    lngRetval = RegSetValueEx( lngKey, &amp;quot;YourValue&amp;quot;, 0, REG_SZ, ByVal strValue, lngLength)&lt;br /&gt;
    &amp;quot;Close the key&lt;br /&gt;
    RegCloseKey (lngKey)&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Working with the Registry Using the VBA Registry Functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub ExperimentWithRegistry() &lt;br /&gt;
    Dim vaKeys As Variant &lt;br /&gt;
    &amp;quot; create new registry entries  &lt;br /&gt;
    SaveSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Name&amp;quot;, &amp;quot;XLTest&amp;quot; &lt;br /&gt;
    SaveSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Version&amp;quot;, &amp;quot;1.0.0&amp;quot; &lt;br /&gt;
    SaveSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Date&amp;quot;, &amp;quot;10/11/2003&amp;quot; &lt;br /&gt;
    PrintRegistrySettings &lt;br /&gt;
    SaveSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Version&amp;quot;, &amp;quot;1.0.1&amp;quot; &lt;br /&gt;
    PrintRegistrySettings &lt;br /&gt;
    vaKeys = GetAllSettings(&amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;) &lt;br /&gt;
    PrintAllSettings vaKeys &lt;br /&gt;
    DeleteSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Name&amp;quot; &lt;br /&gt;
    DeleteSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Version&amp;quot; &lt;br /&gt;
    DeleteSetting &amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Date&amp;quot; &lt;br /&gt;
    PrintRegistrySettings &lt;br /&gt;
End Sub &lt;br /&gt;
Sub PrintRegistrySettings() &lt;br /&gt;
    On Error Resume Next &lt;br /&gt;
    Debug.Print &amp;quot;Application Name: &amp;quot; &amp;amp; GetSetting(&amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Name&amp;quot;) &lt;br /&gt;
    Debug.Print &amp;quot;Application Version: &amp;quot; &amp;amp; GetSetting(&amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Version&amp;quot;) &lt;br /&gt;
    Debug.Print &amp;quot;Application Date: &amp;quot; &amp;amp; GetSetting(&amp;quot;XLTest&amp;quot;, &amp;quot;General&amp;quot;, &amp;quot;App_Date&amp;quot;) &lt;br /&gt;
End Sub &lt;br /&gt;
Sub PrintAllSettings(vaSettings As Variant) &lt;br /&gt;
    Dim nItem As Integer &lt;br /&gt;
    If IsArray(vaSettings) Then &lt;br /&gt;
        For nItem = 0 To UBound(vaSettings) &lt;br /&gt;
            Debug.Print vaSettings(nItem, 0) &amp;amp; &amp;quot;: &amp;quot; &amp;amp; _ &lt;br /&gt;
                vaSettings(nItem, 1) &lt;br /&gt;
        Next &lt;br /&gt;
    End If &lt;br /&gt;
End Sub &lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Write a value from the Windows Registry==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Private Declare Function RegOpenKeyA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sSubKey As String, ByRef hkeyResult As Long) As Long&lt;br /&gt;
Private Declare Function RegCloseKey Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long) As Long&lt;br /&gt;
Private Declare Function RegSetValueExA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sValueName As String, ByVal dwReserved As Long, ByVal dwType As Long, ByVal sValue As String, ByVal dwSize As Long) As Long&lt;br /&gt;
Private Declare Function RegCreateKeyA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sSubKey As String, ByRef hkeyResult As Long) As Long&lt;br /&gt;
Private Declare Function RegQueryValueExA Lib &amp;quot;ADVAPI32.DLL&amp;quot; (ByVal hKey As Long, ByVal sValueName As String, ByVal dwReserved As Long, ByRef lValueType As Long, ByVal sValue As String, ByRef lResultLen As Long) As Long&lt;br /&gt;
Function GetRegistry(Key, Path, ByVal ValueName As String)&lt;br /&gt;
    Dim hKey As Long&lt;br /&gt;
    Dim lValueType As Long&lt;br /&gt;
    Dim sResult As String&lt;br /&gt;
    Dim lResultLen As Long&lt;br /&gt;
    Dim ResultLen As Long&lt;br /&gt;
    Dim x, TheKey As Long&lt;br /&gt;
    TheKey = -99&lt;br /&gt;
    Select Case UCase(Key)&lt;br /&gt;
        Case &amp;quot;HKEY_CLASSES_ROOT&amp;quot;: TheKey = &amp;amp;H80000000&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_USER&amp;quot;: TheKey = &amp;amp;H80000001&lt;br /&gt;
        Case &amp;quot;HKEY_LOCAL_MACHINE&amp;quot;: TheKey = &amp;amp;H80000002&lt;br /&gt;
        Case &amp;quot;HKEY_USERS&amp;quot;: TheKey = &amp;amp;H80000003&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_CONFIG&amp;quot;: TheKey = &amp;amp;H80000004&lt;br /&gt;
        Case &amp;quot;HKEY_DYN_DATA&amp;quot;: TheKey = &amp;amp;H80000005&lt;br /&gt;
    End Select&lt;br /&gt;
    &lt;br /&gt;
    If TheKey = -99 Then&lt;br /&gt;
        GetRegistry = &amp;quot;Not Found&amp;quot;&lt;br /&gt;
        Exit Function&lt;br /&gt;
    End If&lt;br /&gt;
    If RegOpenKeyA(TheKey, Path, hKey) &amp;lt;&amp;gt; 0 Then _&lt;br /&gt;
        x = RegCreateKeyA(TheKey, Path, hKey)&lt;br /&gt;
    &lt;br /&gt;
    sResult = Space(100)&lt;br /&gt;
    lResultLen = 100&lt;br /&gt;
    &lt;br /&gt;
    x = RegQueryValueExA(hKey, ValueName, 0, lValueType, _&lt;br /&gt;
    sResult, lResultLen)&lt;br /&gt;
        &lt;br /&gt;
    Select Case x&lt;br /&gt;
        Case 0: GetRegistry = Left(sResult, lResultLen - 1)&lt;br /&gt;
        Case Else: GetRegistry = &amp;quot;Not Found&amp;quot;&lt;br /&gt;
    End Select&lt;br /&gt;
    &lt;br /&gt;
    RegCloseKey hKey&lt;br /&gt;
End Function&lt;br /&gt;
Private Function WriteRegistry(ByVal Key As String, _&lt;br /&gt;
    ByVal Path As String, ByVal entry As String, _&lt;br /&gt;
    ByVal value As String)&lt;br /&gt;
    &lt;br /&gt;
    Dim hKey As Long&lt;br /&gt;
    Dim lValueType As Long&lt;br /&gt;
    Dim sResult As String&lt;br /&gt;
    Dim lResultLen As Long&lt;br /&gt;
   &lt;br /&gt;
    TheKey = -99&lt;br /&gt;
    Select Case UCase(Key)&lt;br /&gt;
        Case &amp;quot;HKEY_CLASSES_ROOT&amp;quot;: TheKey = &amp;amp;H80000000&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_USER&amp;quot;: TheKey = &amp;amp;H80000001&lt;br /&gt;
        Case &amp;quot;HKEY_LOCAL_MACHINE&amp;quot;: TheKey = &amp;amp;H80000002&lt;br /&gt;
        Case &amp;quot;HKEY_USERS&amp;quot;: TheKey = &amp;amp;H80000003&lt;br /&gt;
        Case &amp;quot;HKEY_CURRENT_CONFIG&amp;quot;: TheKey = &amp;amp;H80000004&lt;br /&gt;
        Case &amp;quot;HKEY_DYN_DATA&amp;quot;: TheKey = &amp;amp;H80000005&lt;br /&gt;
    End Select&lt;br /&gt;
    &lt;br /&gt;
    If TheKey = -99 Then&lt;br /&gt;
        WriteRegistry = False&lt;br /&gt;
        Exit Function&lt;br /&gt;
    End If&lt;br /&gt;
    If RegOpenKeyA(TheKey, Path, hKey) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
        x = RegCreateKeyA(TheKey, Path, hKey)&lt;br /&gt;
    End If&lt;br /&gt;
    x = RegSetValueExA(hKey, entry, 0, 1, value, Len(value) + 1)&lt;br /&gt;
    If x = 0 Then WriteRegistry = True Else WriteRegistry = False&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Sub UpdateRegistryWithTime()&lt;br /&gt;
    RootKey = &amp;quot;hkey_current_user&amp;quot;&lt;br /&gt;
    Path = &amp;quot;software\microsoft\office\9.0\excel\LastStarted&amp;quot;&lt;br /&gt;
    RegEntry = &amp;quot;DateTime&amp;quot;&lt;br /&gt;
    RegVal = Now()&lt;br /&gt;
    LastTime = GetRegistry(RootKey, Path, RegEntry)&lt;br /&gt;
    Debug.Print LastTime&lt;br /&gt;
    &lt;br /&gt;
    Call WriteRegistry(RootKey, Path, RegEntry, RegVal)&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>