vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Registry-Eintrag HKEY_CLASSES_ROOT unter Vista 
Autor: Fieber
Datum: 03.08.08 18:47

Hallo Zusammen!
Mein Script für das Schreiben und Lesen in der Registry, welches bei WinXP funktioniert, gibt bei Vista leider den Geist auf. Habe schon alles probiert.
Gruß
Fieber

Option Explicit
 
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
        Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal _
        lpSubKey As String, ByVal ulOptions As Long, ByVal _
        samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _
        (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
        Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal _
        lpSubKey As String, ByVal Reserved As Long, ByVal _
        lpClass As String, ByVal dwOptions As Long, ByVal _
        samDesired As Long, ByVal lpSecurityAttributes As Any, _
        phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegFlushKey Lib "advapi32.dll" (ByVal _
        hKey As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" _
        Alias "RegSetValueExA" (ByVal hKey As Long, ByVal _
        lpValueName As String, ByVal Reserved As Long, ByVal _
        dwType As Long, lpData As Long, ByVal cbData As Long) _
        As Long
Private Declare Function RegSetValueEx_Str Lib "advapi32.dll" _
        Alias "RegSetValueExA" (ByVal hKey As Long, ByVal _
        lpValueName As String, ByVal Reserved As Long, ByVal _
        dwType As Long, ByVal lpData As String, ByVal cbData As _
        Long) As Long
 
 
 
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or _
                       KEY_SET_VALUE Or _
                       KEY_CREATE_SUB_KEY Or _
                       KEY_ENUMERATE_SUB_KEYS Or _
                       KEY_NOTIFY Or _
                       KEY_CREATE_LINK
Private Const ERROR_SUCCESS = 0&
Private Const REG_OPTION_NON_VOLATILE = &H0
Private Const REG_DWORD = 4
Private Const REG_SZ = 1
 
 
Private Sub btnOK_Click()
        Dim StrVar$, hKey&, Rv&
 
 
    Rv = RegKeyCreate(HKEY_CLASSES_ROOT, ".mbl")
    If Rv <> 0 Then
       StrVar = "fb_mblfile"
       Rv = RegValueSet(HKEY_CLASSES_ROOT, ".mbl", vbNullString, StrVar)
    End If
 
    Rv = RegKeyCreate(HKEY_CLASSES_ROOT, "fb_mblfile")
    If Rv <> 0 Then
       StrVar = "MusicCatalog MBL-File"
       Rv = RegValueSet(HKEY_CLASSES_ROOT, "fb_mblfile", vbNullString, StrVar)
    End If
 
    Rv = RegKeyCreate(HKEY_CLASSES_ROOT, "fb_mblfile\DefaultIcon")
    If Rv <> 0 Then
       If Right(App.Path, 1) = "\" Then
          StrVar = App.Path & "Musiccatalog.exe,1"
       Else
          StrVar = App.Path & "\Musiccatalog.exe,1"
       End If
       Rv = RegValueSet(HKEY_CLASSES_ROOT, "fb_mblfile\DefaultIcon", _
         vbNullString, StrVar)
    End If
 
    Rv = RegKeyCreate(HKEY_CLASSES_ROOT, "fb_mblfile\Shell\Open\Command")
    If Rv <> 0 Then
       If Right(App.Path, 1) = "\" Then
          StrVar = App.Path & "Musiccatalog.exe" & " /open%1"
       Else
          StrVar = App.Path & "\Musiccatalog.exe" & " /open%1"
       End If
       Rv = RegValueSet(HKEY_CLASSES_ROOT, "fb_mblfile\Shell\Open\Command", _
         vbNullString, StrVar)
       btnOK.Caption = "MBL-OK"
    End If
 
End Sub
 
 
Function RegKeyCreate(Root&, NewKey$) As Long
  Dim Result&, hKey&, Back&
    'Neuen Schlüssel erstellen
    Result = RegCreateKeyEx(Root, NewKey, 0, vbNullString, _
                            REG_OPTION_NON_VOLATILE, _
                            KEY_ALL_ACCESS, 0&, hKey, Back)
    If Result = ERROR_SUCCESS Then
      Result = RegFlushKey(hKey)
      If Result = ERROR_SUCCESS Then Call RegCloseKey(hKey)
        RegKeyCreate = Back
    End If
End Function
 
Function RegValueSet(Root&, Key$, Field$, Value As Variant) As Long
  Dim Result&, hKey&, s$, l&
    'Wert in ein Feld der Registry schreiben
    Result = RegOpenKeyEx(Root, Key, 0, KEY_ALL_ACCESS, hKey)
    If Result = ERROR_SUCCESS Then
      Select Case VarType(Value)
        Case vbInteger, vbLong
          l = CLng(Value)
          Result = RegSetValueEx(hKey, Field, 0, REG_DWORD, l, 4)
        Case vbString
          s = CStr(Value)
          Result = RegSetValueEx_Str(hKey, Field, 0, REG_SZ, s, _
                                        Len(s) + 1)
      End Select
      Result = RegCloseKey(hKey)
    End If
 
    RegValueSet = Result
 
End Function

Gruß
Fieber
http://computer.net-berlin.de - Visual Basic - Tips & Tricks sowie viel Grafik

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Registry-Eintrag HKEY_CLASSES_ROOT unter Vista2.312Fieber03.08.08 18:47
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.380ModeratorDieter04.08.08 07:29
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.435Fieber04.08.08 13:32
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.329Elwood04.08.08 09:12
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.392Fieber04.08.08 18:11
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.364Henrik05.08.08 14:30
Re: Registry-Eintrag HKEY_CLASSES_ROOT unter Vista1.378Fieber05.08.08 20:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel