|
| Autor |
Nachricht |
Scruby_ Tutorial Leser

Anmeldedatum: 27.08.2007 Beiträge: 27
|
Registry Schlüssel
Verfasst am: 05.09.2007, 14:28 |
|
|
wie kann ich am besten prüfen ob ein bestimmter schlüssel bzw wert existiert?
bis jetzt habe ich beim datentyp registrykey noch keine exists function gefunden.
grüße
Scruby |
|
| |
|
 |
schieGG_ Newbie


Anmeldedatum: 25.08.2007 Beiträge: 11
|
Verfasst am: 05.09.2007, 18:44 |
|
|
| Code: |
Dim register As RegistryKey
register = Registry.LocalMachine.OpenSubKey( _
"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
register.GetValue(xxxxx)
|
|
|
| |
|
 |
Scruby_ Tutorial Leser

Anmeldedatum: 27.08.2007 Beiträge: 27
|
Verfasst am: 06.09.2007, 09:53 |
|
|
Das Problem ist da aber, dass ich nicht weiss welche unterschlüssel schon dort sind...
Hatte ich oben schlecht erklärt.
Bei
| Code: | Dim register As RegistryKey
register = Registry.LocalMachine.OpenSubKey( _
"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
|
Es kann sein dass dort nur z.B. HKLM\OFTWARE\Microsoft\Windows existiert und noch CurrentVersion und Run angelegt angelegt werden müssen.
| Code: | Key.createsubkey("CurrentVersion")
...
|
Wenn ich aber gleich die unterschlüssel anlege gehen die werte in diesen verloren und das sollen sie nicht.
evtl lässt sich das mit einer try-catch-schleife realisieren. |
|
| |
|
 |
schieGG_ Newbie


Anmeldedatum: 25.08.2007 Beiträge: 11
|
Verfasst am: 06.09.2007, 11:11 |
|
|
habe jetz das zwar nicht "nachgebaut" was du willst aber ich glaube wie es gehen könnte...
Von mir ausgesehen (wenn ich dich richtig verstehe) gibt es 2 Lösungen. Wenn du ein nicht existierender SubKey öffnest und es einen Fehler generiert kannst du es wie du gesagt hast mit try-catch machen und dann den schlüssel erstellen...
Oder es gibt doch, glaube ich, eine Count funktion, dann kannst du die items oder keys zählen...
http://www.codeproject.com/vb/net/registry_with_vb.asp
ich weiss dich wast du genau machen willst, aber ich glaube du findest sicher die passende Lösung. |
|
| |
|
 |
Scruby_ Tutorial Leser

Anmeldedatum: 27.08.2007 Beiträge: 27
|
Verfasst am: 06.09.2007, 14:59 |
|
|
thx @ schieGG
ich habe es jetzt geschafft!
hier der code (zum besseren nachvollziehen fast der ganze code von checkbox1_checkedchanged):
[vb:1:10e5a056d3]Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim state As String
If CheckBox1.Checked = True Then
state = "True"
Else
state = "False"
End If
Dim Key As RegistryKey
Try
Try
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\xxx\yyy", True)
Key.SetValue("option", state)
Catch When Err.Number = 91 ' 91: Objekt wurde nicht festgelegt/existiert nicht
Try
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\xxx", True)
Key.CreateSubKey("yyy")
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\xxx\yyy", True)
Key.SetValue("option", state)
Catch When Err.Number = 91
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE", True)
Key.CreateSubKey("xxx")
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\xxx", True)
Key.CreateSubKey("yyy")
Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\xxx\yyy", True)
Key.SetValue("option", state)
End Try
End Try
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Fehler:")
finally
key.close
End Try
End Sub[/vb:1:10e5a056d3]
vllt hilft der code noch jemandem
//Edit:
zum schluss noch key.close |
|
| |
|
 |
|
|