1

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

谢谢,

4

1 回答 1

1

使用%APPDATA%连接字符串中的变量,您不必修改配置文件。这也比硬编码包含用户名的路径更灵活,因为它将允许计算机的所有用户使用您的程序并拥有自己的.sdf文件。

但是,环境变量在 .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");
于 2013-02-22T22:12:10.273 回答