【问题标题】:HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths not working since 1709HKLM\Software\Microsoft\Windows\CurrentVersion\App 路径自 1709 年以来不起作用
【发布时间】:2018-02-09 00:07:35
【问题描述】:

在 WIN 10 Ver 1709 更新后,我们所有的应用程序都停止工作。

失败是dll not found

我已经确定 path 下的子键 HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\xxx.exe 不再是 被应用到用于启动应用程序的系统路径。

要明确一点:

  1. 我们的典型目标机器是 Win 10 家庭版。
  2. 我们所有的软件都已安装并正常运行。
  3. 已安装 WIN 10 更新 1709。
  4. 我们所有的软件都停止工作。

更改系统 PATH 环境变量以仅包含我们的路径可以解决问题。 但这不是解决方案(由于其他已安装软件中的 DLL 冲突)!

创建一个 bat 文件,在调用我们的路径之前将路径设置为我们的路径 可执行文件也有效。注意:这本质上就是 App Paths 路径 应该做的。

有没有人知道 HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths实现了吗?

HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths 下的典型条目如下所示:

密钥:app.exe

子键:(默认)--- 值:[完整路径]\app.exe
SubKey: Path -------- Value: [目录的完整路径];[目录的完整路径];

Path 值就像 System Path env var

但是要意识到现有的注册表项和我们的代码在 WIN 更新完成后不会改变。

一个 BAT 文件,其中包含:

Set PATH=[full path to directory];[full path to directory];%PATH% [full path]\app.exe 就是成功执行 app.exe 所需要的一切

这让我怀疑问题出在 App Paths 实现中。 由于 Microsoft 强烈建议使用 App Paths,因此我发现除了我之外没有人遇到此故障是不寻常的。

【问题讨论】:

  • 你在注册的路径里放了什么特别的东西吗?比如,环境变量或类似的东西?你能提供一个这样的路径的例子吗?
  • 我怀疑它自 1709 年以来就没有工作过。事实上,IIRC,几年前我使用了很多应用程序路径。 (抱歉,忍不住了。)
  • 那么,安德烈亚斯,请解释一下观察结果,即在更新之前一切都在运行,而在更新之后一切都找不到 DLL。我们安装的代码没有改变,我们的应用程序路径的注册表设置也没有改变。如果您真的“经常使用应用程序路径”,请赐教。
  • 只是说你怀疑我的观察是没有帮助的。您认为可能是这种行为的原因是什么?现在注册申请有新要求了吗?
  • 尝试找出 SnippingTool.exe 的位置。 Explorer 和 cmd.exe 似乎表明它位于 c:\windows\system32,但您无法在文件对话框中选择它,并且 Everything(一个 NTFS 文件系统解析器)不认为该文件位于那里。这很奇怪。您也无法从实际找到 SnippingTool.exe 的位置(即通过 Everything)启动 SnippingTool.exe,只会得到一个空白的错误对话框;但是如果应用程序已经在运行,它会将焦点转移到应用程序上,因此它的启动方式存在一些错误。

标签: windows


【解决方案1】:

Win 10 1709 存在一个问题,其中应用路径的路径条目长度限制为大约 250 个字符。如果您的路径条目低于此阈值,它将按预期应用到应用程序的环境。否则,它只是被丢弃。
我没有从微软那里找到任何信息承认这是一个错误,但这是我们的观察。 我们已通过执行以下操作之一解决了该问题: * 如果可能,通过使用短路径来减小路径字符串的大小,并确保路径仅包含真正需要的内容。 * 如果路径仍然太长,那么我们使用我们创建的引导程序首先将路径应用到进程环境,然后启动所需的可执行文件。

【讨论】:

  • 嗨,詹姆斯,感谢您的认可。经过大量的反复试验,我终于在今天(实际上)得出了同样的结论。正如我告诉我的同事,微软只会说他们已经关闭了一个漏洞,而不是引入了一个错误。我的调查对路径的最大长度(大多数在 260 左右)产生了一些猜测,但是,Microsoft 表示密钥限制为 260,但值> 16000。无论如何,我同意我的路径必须在运行时根据需要在过程中缩短和扩展(对于插件等)。
猜你喜欢
  • 2015-03-31
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
相关资源
最近更新 更多