使用Windows7修改.EXE.CONFIG文件中的ConnectionString?

时间:2013-02-22 22:05:20

标签: c# windows-7 sql-server-ce

我在用户应用程序数据文件夹下有一个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部署到另一个地方(这可以吗?这是正确的解决方案吗? ?)

谢谢,

1 个答案:

答案 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");