我有一個Intranet Web應用程序,其中加密的連接字符串存儲在Windows註冊表中(連接字符串由一些其他應用程序共享)。應用程序託管在Windows 2012服務器上。在開發/測試環境(不是生產)中,我希望能夠修改此密鑰,以便我可以切換到不同的數據庫。從Intranet應用程序寫入Windows註冊表
我似乎不能夠寫,我不斷收到根據不同的錯誤,我如何對待它:
string sKeyValue = "SOFTWARE\\SomeProject\\SomeApp";
RegistryKey rk;
rk = Registry.LocalMachine.OpenSubKey(sKeyValue, true); // Requested registry access is not allowed.
嘗試:
RegistryPermission p = new RegistryPermission(RegistryPermissionAccess.AllAccess, sKeyValue);
p.Assert();
也
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."
爲什麼使用註冊表? Web.config更適合這種事情。 – Colin
正如我所提到的,連接字符串在同一臺服務器上的其他幾個應用程序中很常見,所以不是所有應用程序都試圖在連接字符串上保持同步,而是決定將其加密並將其放入註冊表中,以便所有可以使用相同的最新連接字符串(一個地方更新) – NoBullMan