C# 在哪里可以使用windows窗体存储配置文件?

C# 在哪里可以使用windows窗体存储配置文件?,c#,xml,windows,winforms,directory,C#,Xml,Windows,Winforms,Directory,我对windows窗体相当陌生,最近我的任务是创建一个简单的软件,该软件将通过USB驱动器部署到其他公司。我制作了这个软件,所以在第一次运行时,我会检查config.xml文件。如果它不存在,我会将用户发送到一个表单来配置他们的第一次设置。下次我运行程序时,它会跳过这一步,因为config.xml文件中有它的值。问题是,当我调试它时,我发现config.xml文件与可执行文件一起,但是当我在另一台计算机上运行它时,它将其存储到appdata虚拟存储中。我读了这篇文章,发现它与写权限有关 我有没有

我对windows窗体相当陌生,最近我的任务是创建一个简单的软件,该软件将通过USB驱动器部署到其他公司。我制作了这个软件,所以在第一次运行时,我会检查config.xml文件。如果它不存在,我会将用户发送到一个表单来配置他们的第一次设置。下次我运行程序时,它会跳过这一步,因为config.xml文件中有它的值。问题是,当我调试它时,我发现config.xml文件与可执行文件一起,但是当我在另一台计算机上运行它时,它将其存储到appdata虚拟存储中。我读了这篇文章,发现它与写权限有关

我有没有办法绕过这个问题而不提示用户做任何额外的事情,比如以管理员身份运行?我还计划保存使用该程序生成的结果报告,并希望可以在应用程序文件夹中轻松找到XML文件

*注意,我知道内置的设置系统,但这也会存储到appdata中,如果可执行文件直接移动到另一个,它会忽略该配置,并希望创建另一个配置


编辑:请注意,我试图避免写入AppData文件夹。该软件与Visual Studio安装程序-安装项目一起打包。将创建一个msi文件,该文件将应用程序存储在C:\Program Files(x86)\\中。在这个目录中,我有可执行文件、生成的exe.config文件以及所需的所有DLL。这是我试图存储config.xml文件的文件夹,但由于windows的一些魔力,代码认为它存储在这里,但实际上它存储在AppData中的virtualStore文件夹中。

您是否想过使用C:\大多数计算机都已解锁此文件。交替使用
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

AppData文件夹存储在用户名空间中,不需要任何权限。(请记住为您的程序创建一个文件夹以避免冲突)

出于安全考虑,写权限受到限制是一个已知问题。 我们可以学到更多


由于没有人能够回答这个问题,我将发布我的解决方案。而不是使用Visual Studio安装程序工具打包解决方案。我通过复制生成的可执行文件来安装应用程序。如果应用程序是使用安装工具中生成的.msi安装的,则此版本的应用程序具有不存在的写入权限。

听起来像是要写入AppData。@SLaks否,请重新阅读问题。AppData是每个用户的,不需要管理员,也不涉及虚拟存储。但是,当您第一次创建配置文件时,如何为其指定路径?。似乎是您的代码创建了它并选择了位置,因此不清楚为什么它无法检索位置。@Steve我使用StreamWriter创建了文件,只是提供了文件名,所以应该在根目录中创建它。确实如此,但它创建根目录的虚拟存储副本,而不是将其存储在可执行文件所在的真实目录中。该程序可以写入和读取文件没有问题。只是目录不是我告诉它的真正位置。我使用Visual Studio安装程序-安装向导,因此它会自动在应用程序的程序文件中创建一个文件夹。我的重点是避免使用AppData文件夹,因为我最终会想存储一些导出的数据,而不想向用户解释如何访问应用程序数据。我将编辑我的问题,因为似乎很多用户感到困惑。啊,我明白了。我的文件里有个文件夹怎么样。许多程序,如VisualStudio、Word和Rpg maker,都使用这种方法在AthanasiosKaragiannis上存储临时文件和配置文件