0

レジストリに書き込むための次のメソッドを持つ 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 です。お手伝いありがとう。

4

0 に答える 0