Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 无法通过BAT文件编辑注册表,但命令行工作正常_Batch File_Cmd_Registry_Command Prompt - Fatal编程技术网

Batch file 无法通过BAT文件编辑注册表,但命令行工作正常

Batch file 无法通过BAT文件编辑注册表,但命令行工作正常,batch-file,cmd,registry,command-prompt,Batch File,Cmd,Registry,Command Prompt,所以 今天发生了一件奇怪的事。我正在写一些*.bat,它编辑一些注册表值。 例如,假设命令如下: @ECHO ON REG add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "NoPreviewPane" /t REG_DWORD /d "2" /f PAUSE 如果我将其键入(粘贴)到提升的CMD,它将正常工作。 但如果我使用该命令创建一个*.bat文件并运行它:

所以 今天发生了一件奇怪的事。我正在写一些*.bat,它编辑一些注册表值。 例如,假设命令如下:

@ECHO ON 
REG add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "NoPreviewPane" /t REG_DWORD /d "2" /f 
PAUSE
如果我将其键入(粘贴)到提升的CMD,它将正常工作。 但如果我使用该命令创建一个*.bat文件并运行它: -以管理员身份运行:cmd打开和关闭,但什么也没有发生 -正常运行:“访问被拒绝”-这是正常的,因为从cmd编辑需要管理员权限,afaik


有什么想法吗

64位操作系统?您正在使用哪个CMD.exe?对有32位1和64位1!您可能正在写信给HKEY\U CURRENT\U USER\Software。。。在一种情况下连接到HKEY_CURRENT_USER\Software\WOW6432节点,在另一种情况下连接到HKEY_CURRENT_USER\Software\WOW6432节点。你要添加吗?如果在64位操作系统上,您将看到指定注册表32/64位区域的参数


否则,在REG add之前的行上添加@ECHO ON,然后在该行上暂停,查看是否有错误消息。

当当前用户发生更改时,HKEY_当前_用户会发生更改(即管理员)

您需要将脚本写入
HKEY\U CURRENT\U USERS
的相关子键-请注意末尾的S
(更多信息请参见。)

所以,经过一晚上的研究,我找到了一个解决方案。我重置了注册表权限,如链接中所示。之后,问题就解决了

我在命令后暂停了一下,这不是问题所在。哪条路-香港国际大学。。。。路径是的,没错。我说过,当我将它粘贴到CMD中时,这个命令也会起作用,但不会从BAT文件运行。。。任何其他与REG相关的命令也没有。path命令。如果您有暂停,那么为什么不发布输出。问题标题给出了一个错误的想法,即扩展名为.BAT的文件不工作,而扩展名为.CMD的文件工作正常。这令人困惑。我建议您将“但是CMD工作正常”改为“但是命令行工作正常”。这就是您的bat文件中的全部内容吗?我询问的原因是,当您以管理员身份运行时,当前目录已更改。通过将这一行添加到bat文件的最开头,您可以自己查看。回显(%cd%)和暂停。如果您引用的是相关文件,您将找不到它们。如果是这种情况,请将此行添加到bat文件的开头:pushd%~dp0@Aacini-谢谢你的标题建议,你说得对:)我的机器上只有一个用户-我(管理员)。因此,不可能发生某种用户更改。我在OP中编辑了代码。在bat本身中有“@echo on”和“pause”命令。正如我之前所说的:当我以管理员的身份运行它时,cmd会立即打开和关闭。