屏幕保护程序是否仍需安装到System32文件夹中?

4
在 Delphi 时期,我写了几个屏幕保护程序 - 每个程序都是一个单独的可执行文件,将其放入 System32 文件夹中,在 Windows XP 显示控制面板中就可以找到并使用它们。一切都很好。
现在我正在用 C# 写一个更复杂的屏幕保护程序,它必须跨多个程序集(它使用插件模型:将所有程序集合并为一个单独的可执行文件不是一个选项)。
将所有文件倾倒到 System32 看起来并不是很整洁 - 更不用说它在 64 位系统上根本无法工作。 是否有其他方法在 Windows 系统上安装屏幕保护程序? 如果必要的话,我愿意依赖于 Vista/Win7。
迄今为止唯一的建议是,通常情况下将大部分屏幕保护程序安装在 Program Files 下,并将触发器/启动器放入 System32 中。

关闭投票怎么样了?如果它不适合在SO上发布,那应该去哪里呢? - Bevan
我没有投票,但很可能是因为这不是严格的编程问题。它更像是一个“如何正确/清晰地配置系统”的问题。虽然与编程有关,但并非严格意义上的编程。 - Marc B
我想我可以理解有人可能会这样想。在我的情况下,由于System32在PATH上并且我正在使用一些流行的库(例如Ninject),因此不将它们放入该目录变得非常重要,否则我就有破坏其他人应用程序的风险。唉,我想这就是GAC发挥作用的地方。 - Bevan
2个回答

5
我发现更多信息...
屏幕保护程序不需要安装到System32(或SysWoW64)中。
然而,控制面板找不到它并且不会将其列出以供选择。
除非它被配置为当前的屏幕保护程序。
让我解释一下... 当前的屏幕保护程序是由在HKEY_CURRENT_USER \ Control Panel \ Desktop中找到的SCRNSAVE.EXE注册表键指定的。此键的值是指向.SCR文件的完整路径。
Display(XP)或Screen Saver(Win7)控制面板扫描System32(以及64位系统上的SysWow64)中的.SCR文件。如果当前屏幕保护程序所在的文件夹不同,则它还会扫描包含当前屏幕保护程序的文件夹。
因此,如果直接设置注册表键,则屏幕保护程序将被控制面板列出以供选择。但是,一旦用户选择了其他屏幕保护程序,控制面板的下一次调用就不会列出新的屏幕保护程序。

你能否在System32或SysWoW64中使用快捷方式,链接到Program Files/目录下的屏幕保护程序? - Dan
快捷方式没有正确的文件扩展名 - 它只会扫描.scr文件。 - Bevan
你有没有解决方案,可以将屏幕保护程序安装到自己的目录中,但又能在屏幕保护程序中显示出来?我正在编写一个屏幕保护程序,快要完成了,但是这个问题还没有解决。 - Dan
1
我找到的唯一可靠的方法是编写一个“shim”可执行文件——一个小型的、单文件的 .scr 文件,依次启动实际的屏幕保护程序。 - Bevan
我相信这将在Windows上运行。我正在编写一个跨平台的屏幕保护程序。我相信我已经有了Linux桌面的解决方案,所以现在只剩下Mac OS机器了。我相信Mac OS使用一种DLL样式的回调系统来实现屏幕保护程序。我想知道是否可以像你在Windows中建议的那样创建一个启动器应用程序并使其工作。你知道吗?感谢你的建议! - Dan

3

32位的屏幕保护程序被放置在system32文件夹中,而64位的屏幕保护程序被放置在SysWoW64文件夹中。


有用的信息,谢谢。但是,有没有什么方法可以避免文件污染问题? - Bevan
2
@MarcB System32是64位目录,而SysWow64是64位Windows上的32位目录。因此,64位屏幕保护程序将放置在System32目录中。http://technet.microsoft.com/en-us/magazine/ff955767.aspx,http://msdn.microsoft.com/en-us/library/aa384187%28v=vs.85%29.aspx - shf301
@shf301:把这种完全反常的目录命名留给微软就好了。接下来,他们最终会把开始按钮重命名为“关闭”,就像一直以来应该做的那样。 - Marc B
Marc B:把事情留给那些假设系统上从未保证过的东西的无能开发人员。在某个时候,你所做的任何事情都不能改变,因为太多白痴依赖它。你可以阅读雷蒙德·陈(Raymond Chen)的博客,了解其中的许多事情 :-) - Joey
@Joey:是啊,微软为了向后兼容而弯腰屈膝确实值得称赞,但同时也值得批评。在某个时候,你必须说:“看,那是石器时代的东西,我们正在向前发展,不喜欢就算了。” - Marc B
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接