0

我希望在 Windows 用户登录后和 Windows 桌面出现之前加载我的 C# 应用程序。目前我将我的应用程序启动路径添加到注册表运行键。它正确加载了我的应用程序,但出现了 windows windows 桌面 [2 sec] 然后我的应用程序运行

笔记:

我的应用程序使用 winapi 创建单独的桌面,而我运行它的应用程序暂时隐藏了桌面。

4

2 回答 2

3

这实在是做不到。Windows 非常努力地在用户登录后立即启动桌面和资源管理器响应。这对用户来说是最重要的。

你的目标可能是崇高的,但它们与用户想要的不一致。所以总的来说,它们与 Windows 的工作方式不一致(尤其是 Win-7)。

如果您的软件需要提前运行而无需与用户交互,那么服务就是他们的必经之路。需要注意的是,在 Vista 和更高版本的 Windows 系统中,服务无法与用户交互 - 例如,它们不能拥有自己的图形用户界面。带有 UI 的服务本质上是不安全的。

对软件进行分区的一种方法是将一些东西放在服务中,并在其上放置一个 think UI 层。COM 和 Local RPC 是服务和 UI 层之间通信的不错选择。

请注意,您需要在此处进行操作以防止您的组件减慢启动速度。表现不佳的应用程序是引导路径中的最大问题之一。您可以使用Windows Performance Toolkit进行研究

于 2009-05-30T14:29:02.230 回答
0

我认为这有点可能,但你真的需要做很多额外的工作。您可以做的是用您自己的代码替换 Windows Shell,但此时您将全权负责与用户交互的 UI。

如果您的代码不是“恰到好处”,那么您最终可能会安装无法使用的 Windows,而且我不确定您的用户是否会非常感激。

另请注意,您通常直观地希望在 Windows 机器上可用的某些功能是您将无法再访问的 shell 的一部分。有关详细信息,请尝试以http://en.wikipedia.org/wiki/Windows_shell_replacement作为起点。

附录
我自己对实现这一点的技术上实际涉及的内容只有最模糊的了解,但http://dustyant.com/articles/deeshell/似乎是对基础知识的一个不错的解释。再一次……这里是龙确保你在虚拟机或其他东西中这样做,这样你就不会最终填充你的主要 Windows 安装。

简单地说一下“Shell Replacement”的含义:登录后,Windows 会启动一个名为“explorer”的应用程序(不确定这是否仍然适用于 Vista / Win 7...我有一个模糊的回忆,它最近涉及更多) ,它基本上绘制桌面、任务栏等......可以告诉 Windows 启动不同的应用程序而不是默认的图形 shell。此时,您可以控制 Windows 的主 UI……这意味着您负责 Windows 通常在 shell 中执行的所有操作……为您提供了很多控制权和灵活性,但可能还有很多令人头疼的问题。

于 2009-05-31T01:21:17.950 回答