3

概括

如何让我的 GUI 应用程序在 Windows 启动时在不会启动 explorer.exe 的修改过的 Windows 机器上运行。

  • 在Programs -> Startup 文件夹中放置链接不会被执行。
  • 我的应用程序是图形的,所以我不能只修改应用程序以作为服务运行。

背景

我有一个应用程序需要在专用 PC 上运行,用于生成Digital Signage. 它是一种生成公告和各种幻灯片内容的软件,您可以在大型组织的等离子/液晶显示屏上看到这些内容。

我与此类内容管理软件的几个不同供应商有过合作经验,他们基本上都构建了一个 Windows 应用程序,然后从 Windows 中删除一些东西以防止出现任何类型的弹出窗口等。我正在处理的供应商之一现在,windows 已被修改为explorer.exe无法启动。

我们程序的启动时运行功能使用启动文件夹中的链接。我发现,因为explorer.exe我的应用程序也没有运行,所以我的应用程序也没有运行。

当计算机启动时,它会自动启动到数字标牌应用程序的运行模式,该应用程序开始显示可编程内容。你可以按CTRL- ALT-DELETE并杀死他们的程序,然后explorer.exetaskmanager. 大约一秒钟后……我看到我的应用程序启动了。

所以,我的问题是 - 如何让我的应用程序加载到无法启动的 Windows 机器上explorer.exe。任何人都知道是否说即使在没有资源管理器的情况下使用 Run 文件夹中的注册表项也可以工作?有没有其他方法可以让程序在启动时运行?


编辑:接受的答案实施说明

我在接受的答案中实施了该方法。这是我发现在实现它时有用的链接。我从未尝试过注册表项方法。如果有人确认它将在不explorer.exe加载的情况下执行,请发表评论。

4

4 回答 4

6

将您的应用程序转换为服务并将其设置为自动启动。或者,有一些在线工具可以将任意 exe 作为服务运行。自己写一个非常简单。

如果您的应用程序需要与桌面交互并创建 UI,您将需要您的服务在适当的桌面上启动 exe。为此,您可以使用 WTSEnumerateSessions 查找交互式用户会话,使用 WTSQueryUserToken 获取其令牌,然后使用 CreateProcessAsUser 以该用户身份在正确的桌面上启动应用程序。

于 2009-07-13T20:28:50.760 回答
2

<HKLM|HKCU>\Software\Microsoft\Windows\CurrentVersion\Run是放置东西的常用地方,但如果这还不够好,HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon则有一个名为“Userinit”的字符串,它确实支持多个逗号分隔值。

如果您想进入无证土地,注册表中有一百万个启动位置,从 Sysinternals 启动 Autoruns,同时使用 RegMon/ProcessMonitor 进行监控

于 2009-07-14T11:00:45.733 回答
0

你可以尝试修改

[HKEY_CLASSES_ROOT\Folder\shell] 

将默认值设置为可执行文件的路径/名称

这很危险 ..如果你把它搞砸了,你可能会在让系统正常工作时遇到很大的问题..最好在虚拟机中尝试/玩

于 2009-07-13T20:42:35.400 回答
0

你能在注册表中添加一个条目吗

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

钥匙?

我不确定 explorer.exe 是否负责启动该区域中的程序,或者 Windows 后端是否负责,但值得一试。

于 2009-07-13T20:47:51.863 回答