我在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
咦?
如果我将其命名为文件名中包含“patch”的内容,例如foopatch.d
,也会发生这种情况。为什么会发生这种情况,我可以禁用它吗?
答案 0 :(得分:3)
这与D语言或DMD无关。这是一个特色'在Windows中。
Windows会检查要执行的可执行文件的文件名是否包含setup.exe
或*-setup
,或installer.exe
或*-installer
。这同样适用于patch
。 Windows假定由于设置/安装程序/修补程序等程序通常需要管理权限,因此会向用户(您)请求管理权限。
TL; DR:如果名称包含setup
,installer
,patch
等,则Windows假定某个程序需要管理权限。只需更改文件名即可。\ n \ n修好。