C#:您如何在文件系统中组织屏幕保护程序?

时间:2009-08-17 11:34:20

标签: c# installer filesystems screensaver

我打算创建一个屏幕保护程序。考虑尝试一些WPF。无论如何,我不太确定如何在文件系统中组织磁盘保护程序。我主要有两个相关问题,我对如何解决这个问题非常不确定:

  1. 通常,应用程序与Program Files文件夹中的所有第三方程序集,静态资源,图像等一起运行,并从那里运行。例如 C:\ Program Files \ MyScreenSaver 。但是(如果我没有遗漏某些东西)Windows中屏幕保护程序的可执行文件需要具有scr扩展名并且存在于系统文件夹中,例如 C:\ Windows \ System32 。如何编程屏幕保护程序,以便它可以找到“其余部分”?你会使用Windows注册表吗?或者在scr文件旁边创建一些配置文件,其中包含其余的路径?你会让scr成为应用程序文件夹中exe的启动器吗?或者这是个坏主意?

  2. 我还希望屏幕保护程序从互联网上的某些位置下载新内容。但是我把它放在哪里,屏幕保护程序如何找到它?如果我理解正确,应用程序不是在其应用程序文件夹中创建新内容,而是在用户文件夹中创建新内容。我如何找到该文件夹​​?你是从环境变量构建的吗?在什么特定的目录中,这样的事情应该真的存在?例如,在Vista上,我看到你有一个名为 C:\ ProgramData 的文件夹。您还有 C:\ Users \ username \ AppData \ Local C:\ Users \ username \ AppData \ LocalLow C:\ Users \ username \ AppData \漫游。还看到很多程序在我的文档文件夹中转储东西(虽然我讨厌杂乱我的文档文件夹的程序,所以我可能会尽量避免这种情况:p)。

  3. 在涉及在文件系统中布置应用程序的这些问题时,有哪些最佳做法?我希望它对于Windows 7来说是最好的和“最正确的”,这意味着它在Vista中可能也会起作用(?),但它也需要在XP中工作,因为很多

3 个答案:

答案 0 :(得分:1)

我还在使用XP:)

System.Environment.SpecialFolders是您想要的这些特殊位置。

说,

System.Environment.SpecialFolder.LocalApplicationData

答案 1 :(得分:0)

对于屏幕保护程序,我会尝试将大部分内容放在.exe(.scr)文件中。它可能使可执行文件相当大,但我认为这是值得的。

对于下载的内容使用应用程序数据文件夹,或者可能允许用户设置位置(将路径放入注册表中)。例如,如果您正在下载图像,则用户可能希望将其放入“我的图片”文件夹中。

答案 2 :(得分:0)

您可以将它放在System32(或SysWOW64)文件夹中,但您也可以将其放在Windows文件夹中,这样可以防止x86与x64问题。

您可以在此处找到其他一些难以找到但有关编写屏幕保护程序的重要信息: https://github.com/steveniles/MandelZoom/wiki

(披露:我将上面的wiki编写为我自己的一个屏幕保护程序的源代码的伴侣。)