【问题标题】:Why does patch.d require administrator privileges?为什么 patch.d 需要管理员权限?
【发布时间】:2016-09-19 23:59:11
【问题描述】:

我在 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,也会发生这种情况。为什么会发生这种情况,我可以禁用它吗?

【问题讨论】:

标签: d elevated-privileges dmd


【解决方案1】:

这与 D 语言或 DMD 无关。它是 Windows 中的“功能”。 Windows 检查要执行的可执行文件的文件名是否为/具有setup.exe*-setup,或installer.exe*-installer。这同样适用于patch。 Windows 假定由于诸如设置/安装程序/补丁之类的程序通常需要管理权限,它会要求用户(您)提供管理权限。

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

【讨论】:

  • 根据您运行的 Windows 版本,您应该能够更改 UAC 设置,或者可以更改为非管理员,这样就不会出现这些烦人的提示。我总是以非管理员身份运行,并且有另一个管理员帐户,并且 UAC 提升提示已关闭。
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多