如何在Windows屏幕保护程序的WPF中写入文件

时间:2018-11-14 22:18:17

标签: c# wpf file-writing screensaver

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

我尝试过:

  • 添加清单以管理员身份运行
  • 用8个字符加3个扩展名来命名我的文件
  • 将文件写入其他位置(“ C:\”,“ C:\ Windows”,“ C:\ Program Files(x86)”,...)

但是什么都不起作用...

有什么想法吗?

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

1 个答案:

答案 0 :(得分:0)

好,我的坏...我发现了问题所在。

首先,屏幕保护程序无权在Windows文件夹中写入。

然后,我试图使用Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)在一个特殊的文件夹中进行写入,但是此属性返回该文件夹的名称。因此,我需要改用MessageBox.Show(log)

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

如@elgonzo所建议,我已经添加了异常处理程序,并使用import java.util.Arrays; public class Project { public static void main(String[] args) { int[] a = {3, 6, 0, 4, 3, 2, 7, 1}; zombieApocalypse(a); } public static void zombieApocalypse(int[] array) { boolean keepGoing = true; int j = 1; while (keepGoing) { int[] arrayCopy = array; //first element if (array[0] == 0) { arrayCopy[1] = array[1] / 2; } //element in the middle for (int i = 1; i < array.length - 1; i++) { if (array[i] == 0) { arrayCopy[i - 1] = array[i - 1] / 2; arrayCopy[i + 1] = array[i + 1] / 2; } } //last element if (array[array.length - 1] == 0) { arrayCopy[array.length - 1] = array[array.length - 1] / 2; } System.out.println("Day " + j); //copies clone back to original array array = arrayCopy; System.out.println(Arrays.toString(array)); j++; int counter = 0; //for each element checking if every city is zero for (int element : array) { counter = counter + element; } //if each element value in every city is zero, we stop if (counter == 0) { keepGoing = false; } } } } 在消息框中显示了错误消息。