我是否缺少Windows服务的明显替代品?

我正在开发一小部分软件,该软件专为某些基于Windows的特殊信息亭设备而设计。它使用驱动程序侦听某些按键/命令,拦截它们并执行某些操作。

在这一刻,我的概念证明非常出色。我既可以在后台将其作为控制台应用程序运行,也可以将其构建为Windows服务。Windows Service确实有效并且运行良好,但是一位同事暗示最好能够根据用户应用程序/窗口的活动状态执行任务-Windows无法(合法地)执行的操作服务,因为它无法枚举用户应用程序。

明显的解决方案是仅在后台运行它-那里没有戏,除了这些信息亭使用自定义Windows Shell(使用组策略部署)。因此,普通的资源管理器“运行”键不会初始化。我现在不知道如何在这种情况下自动运行软件?

另外,如果某人有一种解决方法,可以枚举活动窗口,而对于Windows服务中的特定用户,我会对此感兴趣。注意:我实际上不需要在桌面上做任何事情,只需要读取数据即可。

克雷格

Windows Vista及更高版本完全不允许服务与桌面应用程序进行交互,这是对操作系统安全性的新关注的一部分。我有一个类似的软件(本质上)是为应用程序系统开发的,它枚举窗口以查找特定的旧版应用程序,然后向其发送一些消息(所有内容都在面板上,没有其他方法可以自动执行该老旧的应用程序)。当人们使用组策略登录时,我只是将其作为系统托盘应用程序启动。但是我没有您显然要处理的自定义Windows Shell的问题。祝你好运!

因此,userinit(HKLM\Software\Microsoft\Windows NT\Current Version\Winlogon\)可能不是一个特别糟糕的地方,但是应该有一个或两个选择。多年来(如果您问我),实际上在Windows中出现了多少个Autorun位置有点愚蠢。

以下内容大部分是从http://www.bleepingcomputer.com/tutorials/windows-program-automatic-startup-locations/复制而来的,其中有一个或两个更新。我认为在这里也很方便,谁知道永远存在(或不存在)网络上的内容?

其他自动运行位置包括以下顺序:

引导设备驱动程序

与硬件有关。

  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

Windows进行一些清理工作,然后启动Winlogon,后者启动服务控制管理器,后者启动服务和驱动程序。

服务

SCM启动标有“开始”值2的服务和驱动程序。

  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

RunServicesOnce

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

运行服务

HKLM /.../ RunOnce条目在这些启动完成之前不会运行。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices

**显示登录提示,用户登录,然后自动启动处理继续。

通知运行程序以响应事件,包括登录,注销,启动,关闭,启动屏幕保护程序,停止屏幕保护程序。恶意软件通常使用此密钥来启动自身。

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

UserInit指定应在用户登录后立即启动的程序,并以逗号分隔的程序列表。默认的userinit.exe程序会加载您的配置文件。也是恶意软件使用的通用密钥。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

Shell包含以逗号分隔的userinit.exe将启动的程序列表。默认的外壳程序是explorer.exe。首先在HKCU中启动程序,然后在HKLM中启动程序。

  HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

**现在将处理其余的自动启动位置...

RunOnce(HKLM)主要用于安装程序,如果路径前面带有感叹号(!),则在第一次运行后由OS删除,否则在程序运行之前被删除。这些程序以未定义的顺序同步启动,因此必须先完成所有程序,然后才能加载HKLM /.../ Run,HKCU /.../ Run,HKCU /.../ RunOnce和“启动”文件夹。在安全模式下启动时,这些键将被忽略。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

运行标准程序要从其运行的最常见启动位置,在安全模式下将被忽略,除非带有星号(*)前缀。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

启动文件夹(所有用户)

Win7及以上 %ProgramData%\Microsoft\Windows\Start Menu

赢XP / 2K C:\Documents and Settings\All Users\Start Menu\Programs\Startup

启动文件夹(每个用户)

Win7及以上 %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

赢XP / 2K %USERPROFILE%\Start Menu\Programs\Startup

RunOnce(HKCU)主要用于安装程序,其语义与HKLM RunOnce键(如上)相同。

  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

Explorer Run通常用于根据策略配置运行程序。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

不推荐使用“加载密钥”,不再使用。

  HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load

AppInit_DLLs此注册表值包含加载user32.dll时将加载的dll列表。许多程序会加载user32.dll,因此此处列出的所有内容也会被加载到所有这些程序中。被恶意软件使用。

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows

ShellServiceObjectDelayLoad与Run键类似,但是指向已注册的CLSID InProcServer值。在计算机启动时,启动过程的早期,Explorer会自动加载此键下列出的文件。

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad

启动Windows时,此处列出的SharedTaskScheduler文件自动运行。

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler

其他可能的自动启动位置,取决于操作系统:

  1. c:\ autoexec.bat
  2. c:\ config.sys 3。%WINDIR%\ wininit.ini-通常由安装程序用来使文件运行一次,然后将其删除。
  3. %WINDIR%\ winstart.bat
  4. %WINDIR%\ win.ini-[windows]“加载”
  5. %WINDIR%\ win.ini-[windows]“运行”
  6. %WINDIR%\ system.ini-[启动]“外壳”
  7. %WINDIR%\ system.ini-[启动]“ scrnsave.exe”
  8. %WINDIR%\ dosstart.bat-在Win95或98中使用,当您在关闭菜单中选择“以MS-DOS模式重新启动”时。
  9. %WINDIR%\ system \ autoexec.nt
  10. %WINDIR%\ system \ config.nt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章