C# 如何在WPF for Windows屏幕保护程序中编写文件

C# 如何在WPF for Windows屏幕保护程序中编写文件,c#,wpf,file-writing,screensaver,C#,Wpf,File Writing,Screensaver,我在WPF中开发了一个自定义屏幕保护程序(扩展名为.scr),但我遇到了一个问题: 当Windows运行屏幕保护程序时,应用程序会立即停止。 经过一些测试,我发现这是因为我正在创建/编写文件 我试过: 添加清单以管理员身份运行的步骤 用8个字符+3作为扩展名命名我的文件 在不同的位置写入我的文件(“C:\”、“C:\Windows”、“C:\ProgramFiles(x86)”、…) 但什么都不管用 有什么想法吗 注意:我需要在我的文件中写很多行好的,我的坏。。。我发现我的问题出在哪里了 首

我在WPF中开发了一个自定义屏幕保护程序(扩展名为.scr),但我遇到了一个问题: 当Windows运行屏幕保护程序时,应用程序会立即停止。 经过一些测试,我发现这是因为我正在创建/编写文件

我试过:

  • 添加清单以管理员身份运行的步骤
  • 用8个字符+3作为扩展名命名我的文件
  • 在不同的位置写入我的文件(“C:\”、“C:\Windows”、“C:\ProgramFiles(x86)”、…)
但什么都不管用

有什么想法吗


注意:我需要在我的文件中写很多行

好的,我的坏。。。我发现我的问题出在哪里了

首先,屏幕保护程序没有在Windows文件夹中写入的权限

然后,我尝试使用
Environment.SpecialFolder.MyDocuments
在一个特殊文件夹中写入,但该属性返回文件夹的名称。所以我需要使用
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

最后,我试图在一个不存在的文件夹中编写一个文件。我以为文件夹会自动创建,但我错了


根据@elgonzo的建议,我添加了异常处理程序,并使用
MessageBox.Show(log)

在消息框中显示错误消息,屏幕保护程序无法写入它没有写入权限的文件夹。请记住,屏幕保护程序是在当前桌面用户的帐户下运行的。选择一个非受限目录的目录(例如,您可能希望屏幕保护程序写入用户配置文件中的某个目录…)此外,请确保使用适当且有意义的异常处理保护程序中与文件读/写相关的所有代码,以便您(或您的用户)事实上,当出现问题时,至少有机会获得一些关于“为什么?”的信息……这是一种极其可疑的行为。暂时禁用已安装的反恶意软件产品,然后重试。@elgonzo如果我理解,屏幕保护程序可以写入文件,但只能写入用户配置文件文件夹?我试试这个。异常处理是个好主意,我总是忘记它。但是如果我不能在文件中写入,我就不会有日志…@HansPassant我也会试试这个