什么原因导致复制/重命名/移动的 notepad.exe 无法在某些 Windows 版本中运行?

什么原因导致复制/重命名/移动的 notepad.exe 无法在某些 Windows 版本中运行?

测试环境:

  • Windows 10 专业版 x64,真实
  • Windows Server 2003 R2 x86,错误
  • Windows Server 2008 R2 Enterprise x64,错误
  • Windows Server 2008 R2 数据中心 x64,真实

Windows\ 中有 2 个(或 3 个取决于 x86 或 x64)notepad.exe,分别是 Windows\notepad.exe;Windows\System32\notepad.exe;Windows\SysWOW64\notepad.exe。在上述标记为 True 的环境中,这三个都显示以下行为。

行为:

当我复制 notepad.exe(到任何位置)时,无论我将其放在哪里,复制的可执行文件在执行时都不会启动。没有警告,没有创建任何进程。为此,我检查了几个设置:

  1. 文件权限。
    • 文件权限看起来正常,即已设置执行权限。
  2. 文件所有权。
    • 实际上这应该是无关紧要的,但为了以防万一,我检查了原始记事本的所有权是否为“TrustedInstaller”,复制的可执行文件的所有者是否为管理员组,将所有权授予回 TrustedInstaller 也没有帮助。
  3. 软件限制策略和 AppLocker 策略
    • 当我使用 gpedit.msc 检查时,我的系统上没有这样的策略。(我想到隐藏的默认值,但这种理论不成立,因为 System32 中的其他可执行文件似乎并非如此,例如 calc.exe/cmd.exe 等。)

其他行为:

我尝试使用 cmd/powershell/start 启动复制的可执行文件,但无济于事。

我尝试将 System32 中的 cmd.exe/calc.exe/其他可执行文件/我拥有的其他随机可执行文件/复制到 system32/,但只有 notepad.exe 似乎出现了这种行为。

我尝试删除原始的 notepad.exe,并将其重命名为 notepad2.exe,然后它就无法启动了,如果将名称改回 notepad.exe,它就会再次启动。

问题:

我想知道实现这一目标的机制是什么?

答案1

Sander Berkouwer 在social.technet.microsoft.com

马克·鲁西诺维奇遇到了同样的问题当他将 notepad.exe 从 Windows 目录复制到他的配置文件目录时。经过一番折腾后,他发现了以下内容:

“我知道 .mui 文件存储了与语言相关的资源,如字符串和加速器,所以我很确定记事本无法加载其加速器是因为它无法找到适合我本地美国英语 (En-us) 的资源文件。为了验证这一点,我在我的配置文件目录中创建了一个 En-us 子目录,并将 Notepad.exe.mui 复制到其中,从我的目录中重新运行记事本,它就可以正常工作了。”

我猜您的解决方案是将 notepad.exe.mui 放在与您的语言环境同名的子文件夹中。

您的操作系统语言可能有所不同,如果有疑问,只需搜索 Notepad.exe.mui 文件。

这个问题的答案是“这不是一个阻止加载移动的可执行文件的明确机制,这是一个参考解决方案”。我可以确认所描述的方法是有效的。

相关内容