我在用户应用程序数据文件夹下有一个SQL Server CE 4.0(SDF)文件(因为Win7 UAC,如果它位于\ Programs Files \文件夹中,则无法修改数据库。但问题仍然是我需要修改现在(安装时)修改.EXE.CONFIG文件(ConnectionString)以指向数据库的新路径,但显然我没有权限修改\ Program Files \文件夹中的.EXE.CONFIG文件。 ..
那么人们如何解决这个问题呢? 您是否可以将.EXE.CONFIG文件部署到用户应用程序数据文件夹以及SDF文件?如果没有怎么样?我无法相信您需要授予\ Program Files \ Application文件夹的特殊访问权限才能拥有完全访问权限...
我正在使用VS2010并使用标准的部署项目(MSI),我不认为无论如何将.EXE部署在一个地方将.EXE.CONFIG部署到另一个地方(这可以吗?这是正确的解决方案吗? ?)
谢谢,
答案 0 :(得分:1)
在连接字符串中使用%APPDATA%
变量,您不必修改配置文件。这比硬编码包含用户名的路径更灵活,因为它允许计算机的所有用户使用您的程序并拥有自己的 .sdf 文件。
但是,environment variables are not automatically expanded in .NET,您需要使用Environment.ExpandEnvironmentVariable
方法强制执行此操作:
// Example appSetting element:
// <add key="examplePath" value="%APPDATA%\example.txt" />
string path = System.Configuration.ConfigurationManager.AppSettings["examplePath"].ToString();
path = Environment.ExpandEnvironmentVariables(path);
System.IO.File.WriteAllText(path, "foobar");