Windows窗体项目(C#)正在将文件移动到用户';s目录

本文关键字:用户 移动 目录 文件 项目 窗体 Windows | 更新日期: 2023-09-27 18:00:31

我有一个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和database.mdb中收集.exe到同一个文件夹中,它就可以完美地工作。

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

我还尝试安装到"当前用户"answers"所有用户",行为是相同的。

Windows窗体项目(C#)正在将文件移动到用户';s目录

您已经在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

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

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