首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 10 runas转义

Windows 10 runas转义
EN

Stack Overflow用户
提问于 2016-02-14 10:47:15
回答 1查看 1.1K关注 0票数 2

这更像是理论构造,或者是一个有趣的问题,而不是真实的场景--在这种情况下,我会使用批处理文件来防止转义问题。

  1. 假设我们想以某种方式在Windows 10上运行runas: runas /user:John "cmd.exe /k echo %path%“ 这不起作用,因为%path%是展开的,我们得到了错误: 尝试启动cmd.exe /k回送C:\Program (x...。运行错误:无法运行- cmd.exe /k ech.1734:数组边界无效。 有可能解决这个问题吗?例如,如何逃脱%?如果我们试着 runas /user:John "cmd.exe /k echo ^%path^%“ 新shell窗口中的输出只是 %路径% 这不是我们想要的(我们希望PATH变量的值被打印到控制台中)。
  2. 假设我们需要一些其他的东西,我们需要在我们的命令中使用“: runas /user:John "cmd.exe /k dir c:\Program“ 这是不起作用的-显然是因为程序和文件之间的空间,新的shell窗口显示了两次“文件未找到”。 人们会认为解决这一问题的办法是 runas /user:John "cmd.exe /k dir ^"c:\Program ^“ 但这不起作用(runas打印使用帮助)。问题是为什么? 这里真正的解决方案是使用\": runas /user:John "cmd.exe /k dir \"c:\Program \“ 这种转义可以在runas使用帮助示例一节中看到。但这不是一种常见的逃避引语的方法,对吗?这里的问题是--为什么^"不能工作?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-14 11:33:00

我们涉及三个实体:

  • 外部cmd外壳,在其中键入runas ...
  • 获得creds的runas.exe启动了一个新的进程,等等。
  • 内部cmd外壳,这是runas被告知要执行的

键入runas ... "cmd.exe /k echo %path%"

  • 外壳可以看到%path%并扩展它
  • runas接受展开的命令,以参数的形式启动内部shell
  • 内壳与它所看到的相呼应。

键入runas ... "cmd.exe /k echo ^%path^%"

  • 外壳在引号中看到^%path^%,并将插入符号解释为转义百分比符号,因此它不会展开path并保留插入符号。
  • runas将运行的命令视为cmd.exe /k echo %^path^%
  • 内核外壳可以看到echo ^%path^%,而在新窗口中可以看到%path%

因此,当插入符号在引号中时,它们将被保留。但是如果不使用引号,runas就不能工作--命令必须被看作是一个参数。该怎么办呢?

一种方法是使用批处理文件,正如您所说的。

另一种方法是使用不同的环境变量:

代码语言:javascript
复制
set aa=echo ^%path^%
runas /user:rpres "cmd.exe /k %aa%"
  • 外壳可以看到set命令中没有引号的插入符号,并生成一个值为echo %path%的变量。
  • 外壳看到要在runas行上展开的变量,并对其进行扩展。就一次。内部%path%未展开
  • runas将命令看作是cmd.exe /k echo %path%,而runas则是
  • 内部外壳可以看到echo %path%。它扩展了这条路。您可以在新窗口中看到展开的路径。

最后一种方法是在转义插入符号之前从引号中提取出来:runas.exe ... "cmd.exe /k echo "^%path^% --重要的是,没有不在引号中的空格!

  • 外壳可以看到runas行中没有引号的插入符号,并在移除插入符号时转义百分比符号。
  • runas将命令看作是cmd.exe /k echo %path%,而runas则是
  • 内部外壳可以看到echo %path%。它扩展了这条路。您可以在新窗口中看到展开的路径。

请注意,在完成转义百分比后,您可以“回到引号中”。例如,runas /user:rpres "cmd.exe /k echo here is my path :::"^%path^%":::"将显示here is my path,后面是用三个冒号括起来的路径。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35390865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档