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
. 为什么会发生这种情况,我可以禁用它吗?
这与 D 语言或 DMD 无关。这是 Windows 中的一项“功能”。Windows 检查要执行的可执行文件的文件名中是否包含setup.exe
或*-setup
, orinstaller.exe
或*-installer
。这同样适用于patch
. Windows 假定由于像设置/安装程序/补丁这样的程序通常需要管理权限,因此它会向用户(您)请求管理权限。
TL;DR:如果名称包含setup
、installer
、patch
等,Windows 会假定程序需要管理权限。只需更改文件名,它就会被修复。