Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Registryschlüssel mit VBSkript löschen (https://www.delphipraxis.net/88665-registryschluessel-mit-vbskript-loeschen.html)

Luckie 19. Mär 2007 00:52


Registryschlüssel mit VBSkript löschen
 
Alternativ zu dem Batch-Skript http://www.delphipraxis.net/internal...t.php?t=106019 versuche ich das Problem über ein VBSkript zu lösen:
Code:
const HKEY_CURRENT_USER = &H80000001
Path = "SOFTWARE\z"

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

objReg.DeleteKey HKEY_CURRENT_USER, Path & "\Test"

objReg.EnumKey HKEY_CURRENT_USER, Path, SubKeys

If IsEmpty(SubKeys) Then
  MsgBox "Leer"
  objReg.DeleteKey HKEY_CURRENT_USER, Path
End If
Aber das will nicht so recht. SubKeys ist ein Array mit den Unterschlüsseln. Aber wie bekomme ich raus, ob es leer ist oder nicht?

EWeiss 19. Mär 2007 04:20

Re: Registryschlüssel mit VBSkript löschen
 
Zitat:

Zitat von Luckie
Alternativ zu dem Batch-Skript http://www.delphipraxis.net/internal...t.php?t=106019 versuche ich das Problem über ein VBSkript zu lösen:
Code:
const HKEY_CURRENT_USER = &H80000001
Path = "SOFTWARE\z"

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

objReg.DeleteKey HKEY_CURRENT_USER, Path & "\Test"

objReg.EnumKey HKEY_CURRENT_USER, Path, SubKeys

If IsEmpty(SubKeys) Then
  MsgBox "Leer"
  objReg.DeleteKey HKEY_CURRENT_USER, Path
End If
Aber das will nicht so recht. SubKeys ist ein Array mit den Unterschlüsseln. Aber wie bekomme ich raus, ob es leer ist oder nicht?

Die SubKeys sollten zu einer Collection addiert werden
Code:
If Not IsInCollection(MyClass, SubKeys) Then
MyClass.Add Path, SubKeys
End if
dann kannst du ermitteln ob dein wert in der Collection existiert.
Code:
        For Each Path In MyClass
            If Path.name = SubKeys Then
                MyClass.Remove SubKeys
                Exit For
            End If
        Next Path
tritt der entgegengesetzte fall ein dann ist SubKeys nicht leer.

gruss

Luckie 19. Mär 2007 06:23

Re: Registryschlüssel mit VBSkript löschen
 
Danke für die Hilfe, aber ich weiß nicht, ob der Code das macht, was er soll. Ich habe in der Registry meinen Schlüssel (HKCU\Software\MichaelPuff), in dem meine Programme ihre Einstellungen reinschreiben in Unterschlüssel mit dem Programmnamen. Das VBSkript soll jetzt einen Unterschlüssel löschen, zum Beispiel von Programm "X". Und dann soll der Schlüssel "MichaelPuff" nur dann entfernt werden, wenn er leer ist und nicht alle anderen Unterschlüssel von den anderen Programmen auch.

Aber es muss doch einen Möglichkeit in VBSckript geben, um zu überprüfen, ob ein Array leer ist oder nicht, ohne es erst in einer Collection zusammen zu fassen.

EWeiss 19. Mär 2007 07:29

Re: Registryschlüssel mit VBSkript löschen
 
Ein Beispiel!

Registrykey lesen
Code:
' Gibt den Wert des Schlüssels aus "Path" zurück
Public Function RegRead(Path As String) As String
  Dim ws As Object

  On Error GoTo ErrHandler
  Set ws = CreateObject("WScript.Shell")
  RegRead = ws.RegRead(Path)
  Exit Function

ErrHandler:
  RegRead = ""
End Function
Registrykey speichern
Code:
' Schreibt den Wert aus "Value" als den Typ aus "Typ"
' in den in "Path" angegebenen Schlüssel
Public Function RegWrite(ByVal Path As String, _
  ByVal Value As String, _
  Optional ByVal Typ As String = "REG_SZ") As Boolean

  Dim ws As Object

  On Error Goto ErrHandler
  Set ws = CreateObject("WScript.Shell")
  ws.RegWrite Path, Value, Typ
  RegWrite = True
  Exit Function

ErrHandler:
  RegWrite = False
End Function
Registrykey löschen
Code:
' Löscht den Schlüssel aus "Path"
Public Function RegDelete(Path As String) As Boolean
  Dim ws As Object

  On Error Goto ErrHandler
  Set ws = CreateObject("WScript.Shell")
  ws.RegDelete Path
  RegDelete = True
  Exit Function

ErrHandler:
  RegDelete = False
End Function
Vielleicht hilft dir davon etwas weiter..
Du mußt halt dann dein array dementsprechend nur noch spliten um den wert
den du erfahren willst zu ermitteln.

Hier noch ein link der dir weiterhelfen könnte!
http://www.activexperts.com/activmon...ipts/registry/

gruss

Luckie 19. Mär 2007 08:50

Re: Registryschlüssel mit VBSkript löschen
 
Ich probiere das zu Hause mal aus heute Abend.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz