Hallo, ich möchte USB-Sticks am PC sperren. Das soll programmgesteuert an-/abgeschaltet werden können. Unter Windows gibt es ja die gpedit.msc mit der man Lokale Sicherheitsrichtlinien ändern kann. Dort gibt es die Option Computerkonfiguration->Administrative Vorlagen->System->Wechselmedienzugriff->Alle Wechselmedianklassen: Jeglichen Zugriff verweigern. Die Option kann genau dass was ich will und wir auch sofort angewendet. Nur wie kann ich die in meinem C#-Programm modifizieren? Wenn man etwas weiter forscht, dann findet man die entsprechenen Registry-Keys für die Optionen in der "C:\Windows\PolicyDefinitions\RemovableStorage.admx"-Datei. Allerdings - wenn ich die entsprechenden Keys anlege/modifiziere, dann funktioniert das erst nach Rechnerneustart. Wie bekomme ich Windows dazu, dass diese wie in der gpedit.msc direkt angewendet werden? Viele Grüße Michael
M92 schrieb: > Wie bekomme ich Windows dazu, dass diese > wie in der gpedit.msc direkt angewendet werden? nach der Änderung muss man ein Event verschicken, damit die Prozesse die Änderung mitbekommen. Wüsste jetzt aber nicht wie das Event heißt, einfach mal googlen.
Nachtrag: könnte aber auch sein, das es überhaupt nicht geht, weil das nur einmal bei starten angelesen wird.
Danke für die Antwort. Habe vorhin nochmals das halbe Internet durchforstet und habe es nun hinbekommen. Für die, die es nachbauen möchten: Es gibt Librarys, welche die GPOs bearbeiten können, z.B.: siehe Quelltext-Kommentar Dann wird nur noch eine Funktion benötigt:
1 | //http://tech.labs.oliverwyman.com/blog/2013/03/25/programmatically-updating-local-policy-in-windows/ |
2 | //https://bitbucket.org/MartinEden/local-policy/overview |
3 | private static void usb_en_diable(bool enable) |
4 | { |
5 | ComputerGroupPolicyObject gpo = new ComputerGroupPolicyObject(); |
6 | |
7 | // C:\Windows\PolicyDefinitions\RemovableStorage.admx |
8 | const string keyPath = @"Software\Policies\Microsoft\Windows\RemovableStorageDevices"; |
9 | |
10 | using (var machine = gpo.GetRootRegistryKey(GroupPolicySection.Machine)) |
11 | { |
12 | if (enable) |
13 | { |
14 | machine.DeleteSubKey(keyPath); |
15 | } else { |
16 | using (var terminalServicesKey = machine.CreateSubKey(keyPath)) |
17 | { |
18 | terminalServicesKey.SetValue("Deny_All", 00000001, RegistryValueKind.DWord); |
19 | } |
20 | } |
21 | } |
22 | gpo.Save(); |
23 | } |
Das ganze funktioniert logischerweise nur mit Admin-Rechten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.