Announcement

Collapse
No announcement yet.

Berechtigung eines Registry-Schlüssels ändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Berechtigung eines Registry-Schlüssels ändern

    Hallo zusammen,
    ich möchte die Berechtigung eines Schlüssels in der Registry ändern z.B.:
    [HKEY_LOCAL_MACHINE\SOFTWARE\MySchluessel].

    Hat jemand eine Idee?

    Mir würde es auch schon reichen, wenn ich dies in einer Batch erledigen könnte.

    Ich habe mal in einer Test.reg einen Schlüssel erstellt und wieder gelöscht. Aber wie ich die Berechtigung ändere ist mir nicht klar...

    Beispiel für eine Batch:

    Windows Registry Editor Version 5.00
    ; Schlüssel erstellen
    [HKEY_LOCAL_MACHINE\SOFTWARE\ MySchluessel]

    ; Schlüssel löschen
    [-HKEY_LOCAL_MACHINE\SOFTWARE\ MySchluessel]

    Falls einer dafür eine Idee hat wäre ich sehr dankbar....
    Falls jemand eine Idee für nen .Net Code hätte wäre ich ebenfalls sehr dankbar....

  • #2
    Für .Net habe ich was gefunden...

    Dim rule As New Security.AccessControl.RegistryAccessRule(Environm ent.UserDomainName & "\" & Environment.UserName, Security.AccessControl.RegistryRights.WriteKey Or Security.AccessControl.RegistryRights.ReadKey, Security.AccessControl.AccessControlType.Allow)
    Microsoft.Win32.Registry.LocalMachine.OpenSubKey(" Software\MyKey", True).GetAccessControl().SetAccessRule(rule)

    Wenn ich nun aber über regedit den Key und deren entsprechenden Berechtigungen ansehe, hat sich nichts geändert....

    Hat vielleicht jemand zu diesem Ansatz ne Idee...?

    Comment


    • #3
      Ich bin jetzt schon ein ganzes Stück weiter gekommen....

      Den Schlüssel für den derzeitig angemeldeten Benutzer kann ich jetzt ändern:

      Code:
      Imports System.Security.AccessControl
      Imports System.Security.Principal
      Imports Microsoft.Win32    
      
      
      Dim MyRegSec As New RegistrySecurity()
          Dim MyUser As String = Environment.UserDomainName & "\" & Environment.UserName
          Try
            Dim rule As New Security.AccessControl.RegistryAccessRule(MyUser, Security.AccessControl.RegistryRights.FullControl, Security.AccessControl.AccessControlType.Allow)
      
            MyRegSec.AddAccessRule(New RegistryAccessRule(MyUser, RegistryRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow))
      
      
            Dim MyRegKey As RegistryKey = Nothing
            
      	'Schlüssel muss vorhanden sein	
            MyRegKey = Registry.LocalMachine.OpenSubKey("MyTestKey", True)
            MyRegKey.SetAccessControl(MyRegSec)
      
      
            If MyRegKey IsNot Nothing Then MyRegKey.Close()
      
            MyRegSec.AddAccessRule(rule)
            Console.WriteLine("Rechte sind OK....")
          Catch ex As Exception
            Console.WriteLine(ex.Message)
          End Try
      Den aktuellen Benutzer übergebe ich, siehe oben, wie folgt:

      Code:
      MyUser = Environment.UserDomainName & "\" & Environment.UserName
      Nun gibt es aber für diesen Schlüssel noch andere Benutzter/Gruppen:
      z.B. Benutzter, Ersteller-Besitzer, Hauptbenutzer....

      Nun meine Frage:
      Gibt es eine Möglichkeit alle Benutzter/Gruppen für einen bestimmten Schlüssel auszulesen ?
      Falls nicht wie wäre die Syntax für z.B. "Hauptbenutzer" usw... um diese "hard" einzugeben...?

      Bin für jeden Tipp dankbar...

      Comment


      • #4
        hallo leute

        Dieses Thema würde mich auch sehr intresieren. Hat da schon wer ne Lösung dazu?

        Comment

        Working...
        X