Autor Beitrag
KarlSchmidberger
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 23.12.10 10:01 
Hallo,

ich schreibe soeben ein Programm für unsere Administratoren in meiner Firma.

Rechte auf einen Registry-Key sollen gesetzt werden.

Mein Programm muß Werte verändern bzw. schreiben auf die der Benutzer mit Benutzer-Rechte noch kein Recht haben.

Das Programm wird mit einem Benutzer-Konto mit Benutzer-Rechte ausgeführt.

Ich denke das ein Benutzer mit Administratorrechte einmal die Registry-Rechte verändern muß, das ist auch in Ordnung.

Geschrieben werden soll in HKLM und in HKCR.

Einen Registry-Key mit den gewünschten Rechten zu Erstellen habe ich schon gefunden.

Ich möcht jedoch nur die Rechte ändern!

schöne Grüße 8)


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
using System;
using System.Security.AccessControl;
using System.Windows.Forms;
using Microsoft.Win32;
 
namespace WindowsFormsApplication4
{
    class c_RegistryKeyRechteÄndern_mit_Delete_
    {
        public void RegistryKeyErstellenAndRechteVergeben()
        {
            String user = "Jeder";
            String RegPath = "SOFTWARE\\_foo";
 
            RegistrySecurity rs = new RegistrySecurity();
 
 
            rs.AddAccessRule(new RegistryAccessRule(user,
                RegistryRights.FullControl | RegistryRights.Delete,
                InheritanceFlags.ContainerInherit,
                PropagationFlags.None,
                AccessControlType.Allow));
 
 
            // Create the example key with registry security.
            RegistryKey rk = null;
            try
            {
                rk = Registry.LocalMachine.CreateSubKey(RegPath,
                    RegistryKeyPermissionCheck.Default, rs);
                rk.SetValue("ValueName""StringValue");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
            if (rk != null) rk.Close();
         }
     }
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 560
Erhaltene Danke: 137



BeitragVerfasst: Do 23.12.10 13:38 
Hallo,

na wenn Du nur die Berechtigungen ändern willst, dann öffne einfach den Schlüssel und setze dann die Berechtigungen. Das würde dann so aussehen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
try
{
  //wenn der Key schon existiert, wird er geöffnet, nicht neu erzeugt!
  using (RegistryKey rk = Registry.LocalMachine.CreateSubKey(RegPath, RegistryKeyPermissionCheck.Default))
  {
    rk.SetAccessControl(rs);    
  }
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}

Marko
KarlSchmidberger Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 23.12.10 14:49 
Hallo,

Danke @Trashkid2000

Perfekt!, DANKE.

Ich dachte "CreateSubKey" löscht den kommpletten Inhalt des Keys ... ist aber nicht so :D

Nochmal vielen Dank
Schöne Grüße