2012-01-09 51 views
3

早在我的德尔福时代,我写了几个屏保 - 每个屏保都是一个可执行文件,放入System32文件夹中,Windows XP显示控制面板将其视为可用。都好。我正在C#中编写一个非常复杂的屏幕保护程序,它必然分布在多个程序集中(它使用的是插件模型:将所有程序集合并到一个可执行程序中并不是一个选项)。是否还需要将屏幕保护程序安装到System32中?

将所有文件转储到System32似乎不是很整洁 - 更不用说它不能在64位系统上工作。

是否有任何其他方式在Windows系统上安装屏幕保护程序?

如果有必要,我愿意依赖于Vista/Win7。

到目前为止,我唯一的建议是安装屏幕保护程序的大部分,通常在Program Files下,并将一个触发器/启动程序放入System32中。

+0

怎么了关闭投票?如果它不属于SO,它属于哪里? – Bevan 2012-01-09 02:39:45

+0

我没有投票,但最有可能是因为这不是严格的编程问题。这更多的是“如何正确/干净地配置系统”。编程相关,但不是严格编程。 – 2012-01-09 03:10:33

+0

我想我可以看到有人可能会这么想。在我的情况下,由于'System32'在PATH上,而且我正在使用一些流行的库(例如Ninject),因此我不把它们放到该目录中变得非常重要,否则我冒着打破其他人应用程序的风险。叹气,我想这是GAC进来的地方。 – Bevan 2012-01-09 04:47:31

回答

2

32位屏保进入system32,而64位屏保进入SysWoW64。

+0

有用的信息,谢谢。但是,有什么办法可以避免文件污染问题? – Bevan 2012-01-09 02:46:41

+0

不是。微软已经为将可移植东西从\ windows树移出一些东西而变得更好了一些,但有些东西仍然需要进入,不管看起来多么“肮脏”。屏保是其中之一。 – 2012-01-09 03:09:38

+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 2012-01-09 03:14:45

4

我发现了更多的信息.​​..

屏幕保护必须安装到System32(或SysWoW64)。

但是,控制面板不会找到它,并且不会列出它进行选择。

除非它被配置为当前的屏幕保护程序。

让我来解释一下......当前的屏幕保护程序是由HKEY_CURRENT_USER\Control Panel\Desktop中的SCRNSAVE.EXE注册表键指定的。此密钥的值是.SCR文件的完整路径。

显示(XP)或屏幕保护程序(Win7的)控制面板扫描System32(和SysWow64在64位系统),用于.SCR文件。它扫描包含当前屏幕保护程序的文件夹,如果这是不同的。

因此,如果您直接设置注册表项,屏幕保护程序将被控制面板列出并可供选择。但是,只要用户选择不同的屏幕保护程序,调用控制面板的下一个将不会列出新的屏幕保护程序。

相关问题