您可以使用此代码获取并替换预定义的环境变量
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);
通过这种方式,您的应用程序将更加灵活,并将轻松适应您的客户无疑会提出的不同外部约束。
(当然,您的安装程序应该选择或配置您对数据库文件具有完全读/写权限的目录)
为了完整性
数据目录在哪里