我希望我的组织使用 Windows Server 2019 具有的默认“打印屏幕”。
我的意思是,当用户按下 PrtScn 按钮时,它将显示并使用默认的“截图工具”。
我的意思是,对于那个工具:
隐藏在这里:
现在,我想使用批处理脚本(将在用户登录时启动)来检查是否在
HKEY_CURRENT_USER\Control Panel\Keyboard
PrintScreenKeyForSnippingEnabled
中,值设置为 0
如果是,那么它会将值更改为
1
1
,那么它将什么也不做。
所以我想到了类似的事情:
reg query HKEY_CURRENT_USER\Control Panel\Keyboard
if %ERRORLEVEL% EQU 0 goto reg add "HKEY_CURRENT_USER\Control Panel\Keyboard" /v "PrintScreenKeyForSnippingEnabled" /t REG_DWORD /d 1 /f || goto end
但无法让它工作。
我的代码有什么问题吗?
命令行
reg query HKEY_CURRENT_USER\Control Panel\Keyboard
输出错误信息:
错误:语法无效。
输入“REG QUERY /?”供使用。
原因是注册表键名中存在空格字符,需要将整个键名用双引号引起来。
reg query "HKEY_CURRENT_USER\Control Panel\Keyboard"
但是该查询只是检查密钥
HKEY_CURRENT_USER\Control Panel\Keyboard
是否存在,并默认列出该注册表项的所有值。它不会检查现有的注册表项是否还有一个名为 PrintScreenKeyForSnippingEnabled
的值,该值是一个双字值,并且具有值 1
。
但是,实际上双字值是否已经存在以及已经存在时它的值是什么并不重要。无论如何,目标是双字值最终出现在当前用户的注册表中,且值为
1
。因此根本不需要额外的步骤,只需
%SystemRoot%\System32\reg.exe add "HKEY_CURRENT_USER\Control Panel\Keyboard" /v "PrintScreenKeyForSnippingEnabled" /t REG_DWORD /d 1 /f >nul
此命令将在尚不存在时创建注册表项
Control Panel
,在尚不存在时创建子项 Keyboard
,在尚不存在时将值 PrintScreenKeyForSnippingEnabled
创建为双字值,且值为 1
。PrintScreenKeyForSnippingEnabled
的双字值已存在且具有不同值,则现有值将替换为值 1
。PrintScreenKeyForSnippingEnabled
的不同类型(如 REG_SZ
)的值,则该命令将删除错误类型的现有值,然后重新创建类型为 REG_DWORD
、值为 1
的值。
该命令仍然可能因缺少写入访问权限而失败,但这在这里不太可能,因为这需要用户或之前执行的脚本修改此密钥的权限。
我建议打开命令提示符,首先运行
reg /?
并阅读简短的输出帮助,接下来运行reg query /?
并阅读较长的输出帮助,最后运行run reg add /?
并再次阅读整个输出帮助。