【问题标题】:How to tell if my process was started from Windows autorun key?如何判断我的进程是否是从 Windows 自动运行键启动的?
【发布时间】:2015-05-07 23:14:37
【问题描述】:

我很好奇是否有办法从我的进程中知道它是否是从 Windows 自动运行键启动的?

这个:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

编辑:发布此问题后,我发现显然有办法找出答案。 Process Explorer不知怎的就知道了:

或者它只是扫描注册表,寻找匹配项?

【问题讨论】:

  • 我看不出有任何方法可以将 HKCU 自动运行程序与 Explorer 在用户会话中启动的任何其他程序区分开来。为什么你需要知道这个?
  • @eryksun:如果这个 GUI 模块是从自动运行开始的,它将影响其中的某些 UI。我尝试为此使用命令行参数,但它不是很可靠,因为任何人都可以添加这些参数。
  • 我不明白为什么有人可以使用指定自动运行界面的命令行参数启动程序。这是一个易于实施的可靠解决方案。
  • 我认为微软不会保留应用程序启动方式的历史记录。您只想保留应用程序的单个实例吗?或者如果它是从 Windows 自动运行启动的,则显示为最小化?
  • @Christian-PMP:不,这不仅仅是保留一个实例。我可以用一个命名对象来做到这一点。更多的是关于用户进程的行为方式。

标签: c++ windows winapi registry windows-explorer


【解决方案1】:

通常,您可以通过安排自动运行注册表项的命令行传递一个特殊参数来指示您从自动运行开始。这是您唯一可行的选择。

【讨论】:

  • 谢谢。是的,可悲的是,这似乎是唯一的解决方案。
  • 您可以杀死其中一个进程,然后重新启动它。然后杀死进程资源管理器并重新启动它。看看它当时要说什么。
  • 哦,我明白你的意思了。是的,这并没有改变自动启动列。它必须通过匹配进程映像路径从注册表中获取它。
  • 这是显而易见的结论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 2018-08-22
  • 2019-01-25
相关资源
最近更新 更多