为什么 patch.d 需要管理员权限?

Why does patch.d require administrator privileges?

我是 运行 DMD32 D 编译器 v2.071.1,在 Windows 8.1(最新更新日期为 09/19/2016)。

当我编译文件名中包含 "patch" 的 D 文件时,生成的可执行文件要求管理员权限。为什么?


如果我将我的文件命名为 foo.d,一切都很好:

C:\Users\sorbet\Desktop> echo int main(string[] argv) { return 0; } > foo.d
C:\Users\sorbet\Desktop> dmd foo.d
C:\Users\sorbet\Desktop> foo.exe
C:\Users\sorbet\Desktop> echo %ERRORLEVEL%
0

但是如果我将它命名为patch.d,突然我需要管理员权限:

C:\Users\sorbet\Desktop> echo int main(string[] argv) { return 0; } > patch.d
C:\Users\sorbet\Desktop> dmd patch.d
C:\Users\sorbet\Desktop> patch.exe

嗯?


如果我将其命名为文件名中包含 "patch" 的名称,如 foopatch.d,也会发生这种情况。为什么会发生这种情况,我可以禁用它吗?

这与 D 语言或 DMD 无关。它是 Windows 中的一个 'feature'。 Windows 检查要在其中执行 is/has setup.exe*-setupinstaller.exe*-installer 的可执行文件的文件名。这同样适用于 patch。 Windows 假定由于像 setups/installers/patches 这样的程序通常需要管理权限,它会向用户(您)询问管理权限。

TL;DR:Windows 假定程序需要管理权限,如果名称具有 setupinstallerpatch 等。只需更改文件名, 会修复的。