キーの配布をしたくないので、ユーザマシンでインストール時にapp.configを暗号化します。
復号化は自動でやってくれるので、app.configから値を取得するコードは変更しなくても大丈夫です。
app.configのappSettingsセクションとConnectionStringsセクションを暗号化するサンプルです。
1、まずWindowsアプリケーションを作成し、appSettingsセクションとConnectionStringsセクションのあるapp.configを用意します。
<configuration> <appsettings> <add key="PASSWORD" value="ABCDEFGHIJKLMN"> </appsettings> <connectionstrings> <add connectionstring="user id=username;password=pswd;data source=mydb" name="DB1" providername="System.Data.OracleClient"> </connectionstrings> …省略… </configuration>
2、インストーラで実行するカスタム動作を定義したクラスを作成します。
同じソリューションに新しいクラスライブラリのプロジェクトを作成します。
参照設定に「System.Configuration.dll」と「System.Configuration.Install.dll」を追加します。
そして「System.Configuration.Install.Installer」クラスを継承したクラスを作成します。
Imports System.Configuration <system.componentmodel.runinstaller(true)> _ Public Class Class1 Inherits System.Configuration.Install.Installer Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary) MyBase.Install(stateSaver) Call CryptographyAppConfig() End Sub ''' <summary> ''' app.configのセクションを暗号化します。 ''' </summary> ''' <remarks></remarks> Private Sub CryptographyAppConfig() Dim sProtectedProvider As String = "DataProtectionConfigurationProvider" ' インストール先の情報を取得 Dim targetDir As String = Me.Context.Parameters("targetdir") Dim appNmae As String = Me.Context.Parameters("appname") 'app.config Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(targetDir + appNmae) 'app.configのセクションを暗号化 Dim sec1 As ConfigurationSection = config.GetSection("appSettings") sec1.SectionInformation.ProtectSection(sProtectedProvider) sec1.SectionInformation.ForceSave = True Dim sec2 As ConfigurationSection = config.GetSection("connectionStrings") sec2.SectionInformation.ProtectSection(sProtectedProvider) sec2.SectionInformation.ForceSave = True config.Save(ConfigurationSaveMode.Full) End Sub End Class
3、セットアッププロジェクトを作成します。
同じソリューションにセットアッププロジェクトを追加し、アプリケーションフォルダに
1で作成したWindowsアプリケーションのプライマリ出力
2で作成したクラスライブラリのプリマり出力を追加します。
次にセットアッププロジェクトの「カスタム動作エディタ」を開き「インストール」ノードを右クリック「カスタム動作の追加」を選択します。
「アプリケーションフォルダ」からクラスライブラリのプリマり出力を選択します。
追加したカスタム動作のCustomActionDataプロパティに/targetdir="[TARGETDIR]/" /appname="WindowsApplication2.exe"を設定します。
※appnameは1で作成したWindowsアプリケーションのexeを指定してください。
以上で設定は終了です。
作成したセットアッププロジェクトでインストールを実行すると、app.configが暗号化されています。
0 件のコメント:
コメントを投稿