2012-05-08 8 views
1

app.configファイルに単一のユーザー名とパスワードを格納するアプリケーションがあります。 私は現在、ユーザーがそれを変更できるように、実行時にapp.configを書き込み可能にしています。共通フォームフォルダのapp.configフォーム

セットアッププロジェクトを使用してインストールしたときに問題が発生すると、app.configがプログラムファイルにインストールされます。プログラムファイルには、どのユーザーでも書き込みできません。

インストール時にapp.configの場所を共通ファイルフォルダに変更して、すべてのユーザーの読み書きができるようにしました。

インストール時に、そこに格納されているデータは、ConfigurationManager.AppSettings ["networkPath"]を使用してアクセスできないと思われます。たとえば、空の文字列を返します。

何が間違っていますか?

+0

あなたがしなければならないことは、インストーラからのプログラムファイルのapp設定ファイルだけにアクセスできることです。それにはどんな設定が使われますか? – nawfal

+0

imはデフォルトのセットアップとデプロイメントプロジェクトを使用していますが、アプリの設定ファイルにどのようにアクセスできますか? –

+0

ビジュアルスタジオからのmsiの意味ですか?私はあまり確かではないが、オプションが必要です。しかし、それを忘れて、あなたはC#アプリケーションからそれを行うことができます。私の答えを参照 – nawfal

答えて

0

次の2つの方法でそれを行うことができます。

  1. は、インストーラによってプログラムファイルに設定ファイルをアプリケーションに特別な許可を与えます。私たちはinnosetupを使ってそれを行います。あなたはそれができないならば、あなたのプログラムの起動からそれを実行します。

    エルス
  2. あなたのAppConfigファイルを配置するために別の場所を選択することができますし、このようにそれを読む:

    ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
    fileMap.ExeConfigFilename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Assembly.GetEntryAssembly().GetName().Name) + ".exe.config"; 
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
                         ConfigurationUserLevel.None); 
    return config.AppSettings.Settings["Key"].Value); 
    

これは私の意見では貧しい選択です。

関連する問題