根据以下评论中收到的必要澄清,我们已经对这个问题进行了编辑。
我有一个简单的 bat 文件,取自https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights。它测试 bat 脚本是否通过双击以用户身份调用,或者以“以管理员身份运行”运行。我已经测试过它,它在管理员级别用户下在我的 Windows 8.1 Home 64 位笔记本电脑上运行良好。当我双击时,它表示它没有从提升的命令提示符运行,而“以管理员身份运行”时则表示不是这样。
从以下评论中可以了解到,管理员的最低权限级别是用户,并选择“以管理员身份运行”将其提升为管理员。
但是在我的 Windows 7 Ultimate 32 位上,它的表现不一样!当我双击它时,它仍然以管理员身份运行。这是一个安全问题吗?有没有办法将其设置为默认用户级别?
在我的控制面板中,UAC 已关闭。另请注意,我没有创建/运行任何快捷方式,而是将其设置为始终“以管理员身份运行”
在我的 Windows 7 上,我希望它在双击时以用户身份运行,并且仅在调用“以管理员身份运行”时以管理员身份运行。
请注意,该脚本超出了讨论范围,但仅将其粘贴在下面以供参考。
@echo off
openfiles > NUL 2>&1
if NOT %ERRORLEVEL% EQU 0 goto NotAdmin
echo Hello from elevated command prompt
goto End
:NotAdmin
echo This command prompt is NOT ELEVATED
:End
pause
exit
答案1
您描述的情况是使用内置管理员帐户登录时的预期行为,即使您启用了用户帐户控制 (UAC)。
从 Windows Vista 开始(截至撰写本文时,包括Windows 10)在默认配置下,使用内置管理员帐户运行的应用程序将以完全管理权限执行。这是因为“管理员批准模式”安全策略是已禁用:
用户帐户控制:内置管理员帐户的管理员批准模式策略设置控制内置管理员帐户的管理员批准模式的行为。
选项包括:
已启用内置管理员账户采用管理员批准模式,默认情况下,任何需要提升权限的操作都会提示用户批准操作。
已禁用. (默认)内置管理员帐户以完全管理权限运行所有应用程序。
如何更改管理员批准模式设置
如果您拥有 Windows 专业版/商业版/企业版/旗舰版:您可以通过以下方式更改此设置编辑本地组策略:
点击开始,
secpol.msc
输入搜索程序和文件框,然后按 ENTER。如果用户帐户控制出现对话框,确认其显示的操作是您想要的操作,然后单击是的。
在控制台树中,展开当地政策,然后点击安全选项。
在详细信息窗格中,向下滚动并双击组策略设置 用户帐户控制:内置管理员帐户的管理员批准模式
在特性页面,进行选择,然后单击好的。
如果您拥有 Windows 家庭版或入门版:您无权访问secpol.msc
本地安全策略,因此无法编辑该策略。但是,这超级用户回答指向另一个幸运的是,仍可访问链接至 askvg.com解释如何更改注册表中的设置:
类型注册表编辑器在运行或开始菜单搜索框中按 Enter。它将打开注册表编辑器。现在转到以下键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
在“策略”项下,查找名称为“系统“。如果不存在,则通过右键单击来创建它政策键并选择“新建 -> 密钥“并给它命名”系统“。
现在选择系统键并在右侧窗格中创建一个新的 DWORD 值以应用所需的调整,如下表所示:
用户帐户控制:内置管理员帐户的管理员批准模式
DWORD 值 -过滤器管理员令牌
启用 -1
禁用 -0