我对Windows表格相当陌生,最近我的任务是创建一个简单的软件,该软件将通过USB驱动器部署到其他公司。我在第一次运行时制作了这个软件,我检查了一个config.xml文件。如果它不存在,我会将用户发送到表单以配置他们的第一次设置。下次运行该程序时,它会跳过此步骤,因为找到了config.xml文件及其值。问题是当我调试它时,我发现config.xml文件和可执行文件一起,但是当我在另一台计算机上运行它时,它将它存储到appdata虚拟商店中。我读到了这一点,发现它与写权限有关。
有没有什么办法可以解决这个问题,而不会提示用户做任何额外的事情,比如以管理员身份运行?我还计划保存使用此程序生成的结果报告,并希望我可以在应用程序文件夹中轻松找到XML文件。
*注意,我知道内置设置系统,但这也存储在appdata中,如果可执行文件直接移动到另一个,它会忽略该配置并想要创建另一个。
编辑:请注意我试图避免写入AppData文件夹。该软件与Visual Studio Installer - Setup Project一起打包。创建一个msi文件,该文件将应用程序存储在C:\ Program Files(x86)\\中。在这个目录中,我有可执行文件,生成的exe.config文件,以及所需的任何DLL。这是我试图存储config.xml文件的文件夹,但由于某些windows魔术,代码认为它存储在这里,但实际上它存储在AppData中的virtualStore文件夹中。
答案 0 :(得分:1)
你有没有想过使用C:\大多数计算机都解锁了。交替使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
AppData文件夹存储在用户名空间中,无需任何权限。 (只需记住为程序创建一个文件夹以避免冲突)
答案 1 :(得分:0)
由于安全性问题,写入权限有限,这是一个已知问题。 可以学到更多here。
由于没有人能够回答这个问题,我将发布我的解决方案。而不是使用Visual Studio Installer工具打包解决方案。我通过从构建中复制生成的可执行文件来安装应用程序。如果使用安装程序工具生成的.msi安装应用程序,则此版本的应用程序具有写入权限。