0

我有一个 Windows 窗体项目并创建了一个安装向导项目,因此我的用户可以以 Next Next Finish 方式安装它。

该项目使用 Microsoft Access 作为数据库,我将数据库文件正确添加到 SetupWizard,一切正常。

但是,重新安装后,我注意到 Windows 正在将数据库文件从“应用程序文件夹”复制到 C:\users\myUser\AppData\Local\VirtualStore\Program Files (x86)\。

仅供参考,我在 app.config 中的连接字符串:

<connectionStrings>
    <add name="<ProjectName>.Properties.Settings.databaseConnectionString"
     connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb;Persist Security Info=True;Jet OLEDB:Database Password=MyPassword"
providerName="System.Data.OleDb" />
</connectionStrings>

如果我只是从 ProjectOutput 中收集 .exe 并将 database.mdb 收集在同一个文件夹中,它就可以完美运行。

当我进行安装时,它将数据库文件复制到 C:\users\myUser\AppData\Local\VirtualStore\Program Files (x86)\ 文件夹,这是一个问题,因为我希望用户将它安装在他喜欢的位置并且文件只留在那里。(顺便说一句,这是软件要求)。

我也试过安装到“当前用户”和“所有用户”,行为是一样的。

4

1 回答 1

0

您在 UAC 系统上发现了文件夹重定向,当您在某些操作系统版本上写入受限文件夹时会发生这种情况:

http://blogs.windows.com/windows/archive/b/developers/archive/2009/08/04/user-account-control-data-redirection.aspx

您的代码需要一个提升清单,以要求用户提升为管理员。这可能会有所帮助:

http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware

并且您需要请求的执行级别管理员。

如果您希望有限的用户能够使用您的应用程序,请重新设计它,使其不会写入需要管理员权限的内容。这就是像用户应用程序数据这样的文件夹的用途。

于 2014-04-29T16:04:02.703 回答