定義済みの環境変数を取得して、このコードで置き換えることができます
string str = Environment.ExpandEnvironmentVariables("%LOCALAPPDATA%");
string expandedConString = "Data Source=|%LOCALAPPDATA%|\Some Folder\File.ext".Replace("|%LOCALAPPDATA%|", str);
ちなみに、%LOCALAPPDATA%
環境変数は同じ値を指しています
string str = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
しかし、この機械は少し不器用だと思います。より良いアプローチは、|DataDirectory|
置換文字列を使用することです。接続文字列を標準で記述します
"Data Source=|DataDirectory|\Some Folder\File.ext"
次に、アプリで、データアクセスコードの前に|DataDirectory|
、構成設定を読み取り、その値を変更するために現在の値を変更します
string myDBPath = ConfigurationManager.AppSettings["PathToDatabase"].ToString();
AppDomain.CurrentDomain.SetData("DataDirectory", myDBPath);
このようにして、アプリケーションはより柔軟になり、顧客が間違いなく課すさまざまな外部制約に簡単に適応できるようになります。
(もちろん、インストーラーは、データベース ファイルに対する完全な読み取り/書き込み権限を持つディレクトリを選択または構成する必要があります)
完全を期すために
DataDirectory はどこにありますか