AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Registryschlüssel mit VBSkript löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Registryschlüssel mit VBSkript löschen

Ein Thema von Luckie · begonnen am 19. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Registryschlüssel mit VBSkript löschen

  Alt 19. Mär 2007, 00:52
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

Re: Registryschlüssel mit VBSkript löschen

  Alt 19. Mär 2007, 04:20
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Registryschlüssel mit VBSkript löschen

  Alt 19. Mär 2007, 06:23
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: Registryschlüssel mit VBSkript löschen

  Alt 19. Mär 2007, 07:29
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Registryschlüssel mit VBSkript löschen

  Alt 19. Mär 2007, 08:50
Ich probiere das zu Hause mal aus heute Abend.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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