管理员使用双引号参数批处理文件的快捷方式

XXB*_*XXB 5 windows administrator batch-file shortcut double-quotes

拿一个极其简单的批处理文件:

echo hi
pause
Run Code Online (Sandbox Code Playgroud)

保存为test.bat.现在,创建test.bat的快捷方式.快捷方式运行批处理文件,打印"hi"然后按预期等待按键.现在,向快捷方式的目标添加一些参数.现在您有一个快捷方式:

%path%\test.bat some args
Run Code Online (Sandbox Code Playgroud)

快捷方式像以前一样运行批处理文件.

现在,以管理员身份运行快捷方式.(顺便说一下,这是在Windows 7上.)您可以使用右键单击 - >以管理员身份运行,或者转到快捷方式的属性并选中高级部分中的框.告诉UAC没关系,快捷方式再次按预期运行批处理文件.

现在,更改快捷方式目标中的参数以添加双引号:

%path%\test.bat "some args"
Run Code Online (Sandbox Code Playgroud)

现在以管理员身份尝试快捷方式 这次不行!弹出一个命令窗口,并且消失得太快,无法看到任何错误.我尝试将> test.log 2>&1添加到快捷方式,但在这种情况下不会创建日志.

尝试运行相同的快捷方式(使用双引号)但不是管理员.它运行批处理文件很好.因此,似乎行为不是因为双引号参数,而是因为它以管理员身份运行.这是两者的奇怪组合.

我还尝试从管理员的命令窗口运行相同的命令.这按预期运行批处理文件而没有错误.从命令窗口运行快捷方式产生了一个新的命令窗口,该窗口闪烁并消失.显然,问题是由管理员,快捷方式和双引号组合引起的.

我完全难过,有没有人知道发生了什么?我也想要一个解决方法.

Luk*_*uke 5

我刚刚运行了Process Monitor,这就是我所看到的:

以用户身份运行:

cmd /c ""C:\Users\Sunbelt\Desktop\test.bat" "some args""

以管理员身份运行

"C:\Windows\System32\cmd.exe" /C "C:\Users\Sunbelt\Desktop\test.bat" "some args"

出于某种原因,Run as Admin案例不引用整个命令.它似乎正在尝试运行命令:

C:\Users\Sunbelt\Desktop\test.bat" "some args

我猜想,因为第一个空格被引用它实际上试图运行以下命令:

"C:\Users\Sunbelt\Desktop\test.bat some" args

在Process Monitor日志中,"C:\ Users\Sunbelt\Desktop\test.bat some"的文件系统条目为"NO SUCH FILE".我不知道为什么在以管理员身份运行时会有所不同,但这似乎正在发生.