レジストリに書き込むための次のメソッドを持つ dll 内にクラスがあります。
public Boolean WriteDBConnectionInfoToRegistry(string txtDSN, string txtServer, string txtDatabase, string txtUser, string txtPassword, bool trusted)
{
SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
rijn.GenerateKey();
rijn.GenerateIV();
Boolean b1 = RegistryWrite("Software\\MyApp", "IV", Reverse(Convert.ToBase64String(rijn.IV)));
Boolean b2 = RegistryWrite("Software\\MyApp", "Key", Reverse(Convert.ToBase64String(rijn.Key)));
Boolean b3 = RegistryWrite("Software\\MyApp", "DSN", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(txtDSN))));
Boolean b4 = RegistryWrite("Software\\MyApp", "Server", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(txtServer))));
Boolean b5 = RegistryWrite("Software\\MyApp", "Database", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(txtDatabase))));
Boolean b6 = RegistryWrite("Software\\MyApp", "User", EncryptString(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(txtUser))),rijn.IV,rijn.Key));
Boolean b7 = RegistryWrite("Software\\MyApp", "Password", EncryptString(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(txtPassword))), rijn.IV, rijn.Key));
Boolean b8 = RegistryWrite("Software\\MyApp", "Trusted", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(Reverse(trusted ? "1" : "0"))));
if (b1 && b2 && b3 && b4 & b5 & b6 & b7 & b8)
{
return true;
}
else
{
return false;
}
}
private bool RegistryWrite(string subKey, string KeyName, object Value)
{
try
{
RegistryKey rk = Registry.LocalMachine;
RegistryKey sk1 = rk.CreateSubKey(subKey);
sk1.SetValue(KeyName.ToUpper(), Value);
return true;
}
catch (Exception e)
{
}
return false;
}
メソッドは、ASP.NET Web ページにインストールした dll の一部である public クラスに含まれています。テストのために Windows アプリケーションから呼び出された場合、メソッドはレジストリに正常に書き込みますが、メソッドが Web サイトのコード ビハインドから呼び出された場合、true を返すにもかかわらず、フォルダーとキーを作成するための書き込みに失敗します。どうすればこれを修正できますか? .dll のフレームワークは .Net 2.0 で、Web アプリケーションは 4.0 です。お手伝いありがとう。