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

sor*_*bet 4 d dmd elevated-privileges

我正在 Windows 8.1 上运行 DMD32 D Compiler v2.071.1(最新更新截至 2016 年 9 月 19 日)。

当我编译文件名中包含“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
Run Code Online (Sandbox Code Playgroud)

但如果我说出它的名字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
Run Code Online (Sandbox Code Playgroud)

联合应用中心

啊?


如果我将其命名为文件名中包含“补丁”的名称,例如foopatch.d. 为什么会发生这种情况,我可以禁用它吗?

Naf*_*ees 6

这与 D 语言或 DMD 无关。这是 Windows 中的一项“功能”。Windows 检查要执行的可执行文件的文件名中是否包含setup.exe*-setup, orinstaller.exe*-installer。这同样适用于patch. Windows 假定由于像设置/安装程序/补丁这样的程序通常需要管理权限,因此它会向用户(您)请求管理权限。

TL;DR:如果名称包含setupinstallerpatch等,Windows 会假定程序需要管理权限。只需更改文件名,它就会被修复。