如何在已经修改为不运行资源pipe理器的Windows系统上启动时运行应用程序

概要

我怎样才能让我的GUI应用程序运行在Windows启动时,将不会启动explorer.exe修改后的Windows框。

  • 程序 – > 启动文件夹中放置一个链接不会被执行。
  • 我的应用程序是graphics化的,所以我不能只是修改应用程序作为服务运行。

背景

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

我曾经与几个不同的内容pipe理软件供应商合作过,他们都是基本上build立一个Windows应用程序,然后从窗口中删除东西,以防止出现任何types的popup窗口等。我正在处理的供应商之一现在,Windows已被修改,以便explorer.exe不启动。

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

当电脑启动时,它会自动启动数字标牌应用程序的运行模式,开始显示可编程内容。 您可以按CTRLALTDELETE并杀死他们的程序,然后从taskmanager启动explorer.exe 。 大约一秒左右…我看到我的申请开始。

所以,我的问题是 – 我怎样才能让我的应用程序加载在一个Windows框不会启动explorer.exe 。 任何人都知道,如果说使用运行文件夹中的registry项即使没有资源pipe理器工作? 有没有其他的方式来启动程序运行?


编辑:接受答案实施注意事项

我在接受的答案中实现了这个方法。 这里是我发现有用的链接。 我从来没有尝试过registry键的方法。 如果有人确认它会执行w / o explorer.exe加载,请留下评论。

  • Process Starter类

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

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

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon有一个名为“Userinit”的字符串,而<HKLM|HKCU>\Software\Microsoft\Windows\CurrentVersion\Run是通常放置东西的地方,它支持多个逗号分隔值。

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

你可以尝试修改

 [HKEY_CLASSES_ROOT\Folder\shell] 

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

这是危险的 ..如果你搞砸了,你可能会有很大的问题让系统工作..最好尝试/玩在虚拟机

你可以添加一个条目到注册表中

 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 

键?

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