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

时间:2016-09-19 23:59:12

标签: d elevated-privileges dmd

我在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

但如果我将其命名为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

UAC

咦?

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

1 个答案:

答案 0 :(得分:3)

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

TL; DR:如果名称包含setupinstallerpatch等,则Windows假定某个程序需要管理权限。只需更改文件名即可。\ n \ n修好。