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

笔记:

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

没有正确的解决方案

其他提示

这实在是不可能做到的。用户登录后,Windows 就很难让桌面启动并让资源管理器做出响应。这对于用户来说是最重要的。

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

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

对软件进行分区的一种方法是将某些内容放入服务中,并在其之上放置一个 Think UI 层。COM 和本地 RPC 是服务和 UI 层之间通信的不错选择。

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

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

如果您的代码不是“恰到好处”,您最终可能会安装无法使用的 Windows,而且我不确定您的用户是否会对此表示赞赏。

另请注意,您通常直观地期望在 Windows 计算机上使用的某些功能可能是您将无法再访问的 shell 的一部分。欲了解详情,请尝试 http://en.wikipedia.org/wiki/Windows_shell_replacement 作为起点。

附录:
我自己对实现这一目标实际涉及的技术只有最模糊的了解,但是 http://dustyant.com/articles/deeshell/ 似乎是对基础知识的一个不错的解释。再说一次... 这里有龙 确保您在虚拟机或其他设备中执行此操作,这样您就不会最终塞满您的主 Windows 安装。

简单介绍一下“换壳”的含义:登录后,Windows 会启动一个名为“explorer”的应用程序(不确定这是否仍然适用于 Vista / Win 7...我模糊地记得最近它涉及得更多一些),它基本上绘制了桌面,任务栏等。...可以告诉 Windows 启动不同的应用程序而不是默认的图形 shell。那时您就可以控制 Windows 的主 UI...这意味着你是 负责 Windows 通常在 shell 中执行的所有操作 ...给你很大的控制力和灵活性,但也可能带来很多麻烦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top