我安装的 WPF 应用程序在尝试创建文件时崩溃

My installed WPF app is crashing while trying to create a file

我的 WPF 应用程序(一个简单的唱首歌游戏)有问题。我刚刚使用 Microsoft Visual Studio Installer Projects extension for Visual Studio 创建了一个 deployment/created 安装项目。一切似乎工作正常,设置工作正常(在其他计算机上测试),而且安装的应用程序几乎可以正常工作。唯一的例外是按钮调用函数,它在安装应用程序的文件夹中创建一个新的 txt(类似于 "save" 文件的草稿)文件。单击此按钮会导致整个应用程序立即崩溃。没有其他事情发生,没有错误消息,应用程序只是关闭。

我认为问题在于对 folder/administrator 权限的访问权限。

我在安装项目中使用 "File System" window 在应用程序文件夹中添加了同名的 txt 文件,再次部署和安装。即使文件存在,问题也会再次发生(可能是因为尝试覆盖文件内容时的访问权限)。

当 运行 应用程序通过 VS 时一切正常,这可能很重要,也可以使用 .exe 在任何计算机上正常工作。问题仅在于使用安装程序安装的应用程序。

我不确定问题出在哪里,所以很难显示一些代码,老实说,我什至不确定这是不是代码问题,也许可以通过设置一些设置项目属性来解决?

我想在两个会话之间在本地存储一些数据,我选择了 txt 文件,因为它轻巧简单,即使它不是最优雅的方式。 我希望已安装的应用程序能够在其文件夹中创建和覆盖 txt 文件。

P.S。如果您需要任何代码、屏幕截图或有关我的设置的信息,请在评论部分告诉我,我会提供必要的

在您安装程序的那一刻,您拥有 administrator-rights。因此,您的应用程序所在的文件夹也是使用 administrator-rigths.

创建的

如果您想将数据存储到此文件夹,您必须运行以管理员身份申请。 (不是最好的主意)

否则,您可以更改代码,以便在 运行 时将文件写入您不需要的其他位置 administrator-rights。

例如:

string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

会给你:"C:\Users\MyUserName\AppData\Local"

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

会给你:"C:\Users\MyUserName\AppData\Roaming"

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

会给你:"C:\Users\MyUserName\Documents"

关于文件保存的一些 error-handling 会非常好并且很有帮助 ;)

谢谢大家的解答和知识,问题如我所料(访问路径被拒绝)。 我正在使用此代码创建路径:

Directory.GetCurrentDirectory() + "\SyntyhCitySave.txt";

在特殊目录而不是应用程序文件夹中创建文件是可行的,这就是我的问题的解决方案:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\SyntyhCitySave.txt";

Tomtom 回答标记为已接受。