2016-04-23 28 views
0

Ich habe eine Intranet-Webanwendung, in der verschlüsselte Verbindungszeichenfolge in der Windows-Registrierung gespeichert ist (Verbindungszeichenfolge wird von einigen anderen Apps geteilt). Die Anwendung wird auf einem Windows 2012-Server gehostet. In Entwicklungs-/Testumgebungen (keine Produktion) möchte ich diesen Schlüssel ändern können, um zu verschiedenen Datenbanken wechseln zu können.Schreiben in Windows-Registrierung von Intranet-App

Ich scheine, um es zu schreiben, nicht in der Lage, ich verschiedene Fehler halte, je nachdem, wie ich es Ansatz:

string sKeyValue = "SOFTWARE\\SomeProject\\SomeApp"; 
RegistryKey rk; 
rk = Registry.LocalMachine.OpenSubKey(sKeyValue, true); // Requested registry access is not allowed. 

Versuchte:

RegistryPermission p = new RegistryPermission(RegistryPermissionAccess.AllAccess, sKeyValue); 
p.Assert(); 

auch

RegistrySecurity rs = new RegistrySecurity(); 
RegistryKey key = Registry.LocalMachine; 
rs = key.GetAccessControl(); 
string sUser = @"domain\userid"; 
rs.AddAccessRule(new RegistryAccessRule(sUser, RegistryRights.WriteKey, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow)); 
key.SetAccessControl(rs); //Exception: "Attempted to perform an unauthorized operation." 
+0

Warum verwenden Sie die Registrierung? Web.config passt viel besser zu solchen Dingen. – Colin

+0

Wie bereits erwähnt, ist die Verbindungszeichenfolge unter einigen anderen Anwendungen auf demselben Server üblich. Daher haben alle Anwendungen, die versuchen, über die Verbindungszeichenfolge miteinander synchronisiert zu bleiben, beschlossen, sie zu verschlüsseln und in die Registrierung zu übernehmen Verwenden Sie die gleiche aktuelle Verbindungszeichenfolge (eine Stelle zum Aktualisieren) – NoBullMan

Antwort

0

Schreibzugriff auf die Registrierung von einer Web-App ist nur eine schlechte Idee rund um. Das automatische Festlegen von Berechtigungen über Webcode ist gefährlich und erfordert, dass der Code über zu hohe Berechtigungen verfügt.

Es ist besser, alle Ihre Web-Apps Erlaubnis zu geben, aus der gleichen web.config-Datei zu lesen, dann erhalten Sie die gemeinsame Einstellung etwas wie hier beschrieben.

IIS web.config - same file for multiple websites

+0

Vielen Dank. Dies ist nur für Dev/Test-Server einer Intranet-App und ich habe nicht die Option, die Sie erwähnten. Ich muss nur wissen, warum ich diese Fehler erhalte. – NoBullMan

+0

Können Sie den Schlüssel manuell zur Registrierung hinzufügen, so dass Sie sich nur um Leseberechtigungen kümmern müssen? – Colin