Forum
Tipps
News
Menu-Icon

Registry Key in Variable kopieren? (VB6)

Hallo,
ich hab nochmal eine Frage zu registry! Wie kann ich folgenden RekKey in eine Variable kopieren?: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders\" und hier dann den key mit Namen "D:\Games\X2 - Die Berohung\" der Typ ist "REG_SZ" und es hat keinen Wert ???. Da ich nicht so gut bin in solchen komplizierten sachen währe es echt super wenn mir da einer zu meinem Beispiel helfen könnte! :)

CIAO
euer Scrat ;D


Antworten zu Registry Key in Variable kopieren? (VB6):

Erklär mal genauer was du machen willst...

Gruß

Folgendes: Ich mache ein Programm für ein PC-Spiel. In dem INstallationsordner des Spiels gibt es einen Ordner soundtrack den möchte ich modifizieren aber das ist jetzt egal! Ich möchte nämlich nur herausbekommen (irgendwie) wohin der Benutzer das Spiel installiert hat. Da ich die in dem Soundrack Ordner beinhalteten Mp3 Dateien kopieren will muss ich aber für den FileCopy Befehl den Pfad angeben in dem sich die Mp3 Dateien befinden! Da das aber bei jedem User unterschiedlich ist will ich es über den bei der Installation angelegten Registry Key herausfinden und dann den inhalt (den Pfad) in eine Variable packen (die z.B: path heißt). Wenn ich nun eine Mp3 Datei kopieren will dann müsste der Pfad so heißen: Filecopy "Das was der Benutzer angegeben hat (Quell Mp3)", path + "soundtrack\1.mp3"

Verstanden? Wäre nett wenn ihr mir Weiterhelft!

CIAO
euer Scrat

Ja hast den wert schon ausgelesen oder willst jetzt wissen wie man den wert des Keys ausliest?

Und was meinst mit er hat keinen wert?
Wenns kein wert gibt kannst ihn auch ned auslesen...

Ansonsten probier mal neues modul anlegen:

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004 '(nur NT)
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006


Public Const REG_SZ = 1
Const KEY_QUERY_VALUE = &H1
Const KEY_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Const ERROR_SUCCESS = 0&


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
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Any) As Long

'----ende deklaration----

Function GetValue(Root&, Key$, Field$, Value As Variant) As Boolean
Dim lResult&, keyhandle&, dwType&
Dim puffergröße&, puffer$, nullpos&

    lResult = RegOpenKeyEx(Root, Key, 0, KEY_READ, keyhandle)
    GetValue = (lResult = ERROR_SUCCESS)
    If lResult <> ERROR_SUCCESS Then Exit Function ' Schlüssel existiert nicht
    lResult = RegQueryValueEx(keyhandle, Field, 0&, dwType, ByVal 0&, puffergröße)
    GetValue = (lResult = ERROR_SUCCESS)
    If lResult <> ERROR_SUCCESS Then Exit Function ' Feld existiert nicht
   
    if dwType= REG_SZ  then     ' nullterminierter String
            puffer = Space$(puffergröße + 1)
            lResult = RegQueryValueEx(keyhandle, Field, 0&, dwType, ByVal puffer, puffergröße)
            GetValue = (lResult = ERROR_SUCCESS)
            If lResult <> ERROR_SUCCESS Then Exit Function ' Fehler
           
            If IsNull(puffer) Then Exit Function
            nullpos& = InStr(puffer, Chr$(0))
            If nullpos = 0 Then
              value = puffer
            elseIf nullpos > 1 Then
              Value = Trim$(Left$(puffer, nullpos - 1))
            endif
    endif
   
    If lResult = ERROR_SUCCESS Then RegCloseKey keyhandle
    GetValue = True

End Function

'------- ende Modul -----

Aufrufen mit:

public sub LesePfad()  
Dim tmp As Variant
 If modulname.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders", "Name_des_schlüsels", tmp) Then
    if len(temp) > 0 then path = tmp
    msgbox tmp
  End If
end sub

Gruß

« Letzte Änderung: 10.03.04, 00:22:47 von Nighty »

Also den RegKey gibt es schon der wurde bei der installation des Spiels angelegt! Und ich möchte den Wert des Keys auslesen da wenn ich regedit öffne und dann diesen Key raussuche dann ist der Name InstallLocation und der Wert ist dann der Pfad des Spiels!

Danke im vorraus

@an beide,

  • gibts da nicht so etwas <CurrentDirectory> - ich nehm' das für .INI oder .LOG-Dateien abzustellen / abzufragen

LOL @ du,

lies mal den ganzen thread, die designen nichts eigenes sondern wolln daten auslesen, die jemand anders abgelegt hat...

LOL @ du,

lies mal den ganzen thread, die designen nichts eigenes sondern wolln daten auslesen, die jemand anders abgelegt hat...

  • hab ich gelesen, er will wissen wo er sich zur runtime befindet - oder gibts da sowas wie <CurrentApplication> ??


@ebill:
er sucht ja praktisch den Installationspfad eines Programms um auf die MP3's zuzugreifen.
Der kann natürlich bei jedem anderst sein
Und der steht in der Registrierung(wenn vorhanden)

@scart:
hab noch was vergessen in der Deklaration muss noch rein:

Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10

Und in der Sub LesePfad musst modulname ersetzten mit dem Namen unter dem du das Modul speicherst wo der Code rein muss und 'Name des schlüssels' musst ersetzen mit 'InstallLocation'

Gruß

So weit so gut! Das mit dem Message Fenster geht auch bloß wie krieg ich die Information aus dem MsgBox in eine Variable?

Naja ein bischen solltest dich schon erstmal mit VB beschäftigen bevor du zu coden anfängst...einen wert einer variablen zuweisen is das mindeste was man können sollte...

Variable = wert

Und zugewiesen ist das ergebnis(installationspfad) ja schon der path-variable

if len(temp) > 0 then path = tmp

(wenn länge(ergebnis/temp) > 0 dann weise ergebnis/temp der variable path zu.

Gruß


« Letzte Änderung: 11.03.04, 18:37:43 von Nighty »

« Wie "spreche" ich das auf VB6?Programmierung in C »
 

Fremdwörter? Erklärungen im Lexikon!
Type 1 Schriften
Type 1 ist ein Schriftformat, das die Schrift-Beschreibung in Form von PostScript-Befehlen speichert. PostScript-Schriften werden mithilfe von PostScript-Operationen besc...

Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...


Mehrere Dateien auf einmal kopieren / löschen – Mit Profi-Trick!

Dateien unter Windows kopieren (Win XP bis Win 11!)