如何在一行中完成RUNAS命令

Acc*_*ndi 24 cmd command-prompt runas

这个Stack Overflow问题建议一个看起来好像应该工作的命令,但它没有(现在这个答案被删除了):

用于在Window 7上以不同用户身份运行的单行命令,其中包含密码

命令是:

echo PaSsWoRd | runas /user:Administrator cmd
Run Code Online (Sandbox Code Playgroud)

不过它说:

未知的用户名或密码错误.

但细节肯定是正确的.例如,如果我要运行:

runas /user:Administrator
Run Code Online (Sandbox Code Playgroud)

...而在下一行,如果我输入PaSsWoRd,它将没有问题.

Bil*_*art 35

runas命令不允许其命令行中输入密码.这是设计(以及您无法将密码作为输入传递给它的原因).Raymond Chen很好地说:

RunAs程序要求您手动键入密码.为什么不在命令行上接受密码?

这是一个有意识的决定.如果可以在命令行上传递密码,人们就会开始将密码嵌入到批处理文件和登录脚本中,这是可笑的不安全.

换句话说,缺少该功能以消除不安全地使用该功能的诱惑.

法案

  • 这完全是失败的.对于那些试图比用户更聪明的软件设计师来说,"安全性"的概念是非常令人讨厌的.如果用户想要嵌入密码,那么这就是他们的特权.相反,我们所有遇到这个链接的人都会去搜索其他方式,通过其他令人讨厌的方式在窗口中利用SUDO等价物,弯曲规则并浪费时间.而不是让一个批处理文件易受攻击,我将发送降低机器上的整体安全性以使"sudo"工作.设计永远不会比用户更聪明.你失败了! (25认同)
  • 您可以从Microsoft sysinternals获得psexec,例如psexec -user MyUser -p MyPassword“ cmd” (7认同)
  • 我们中的一些人不得不生活在大公司的地狱里,在那里可怕的黑客是将事情捆绑在一起的唯一方法。 (5认同)
  • 1)我没有做出这个决定,所以对我这样的咆哮毫无意义.2)微软肯定做出了正确的决定.由于答案中已经说明的主要原因,在脚本中嵌入密码是一个非常糟糕的主意. (3认同)
  • 如果有人好奇:@NS 的“答案”(奇怪的是,作为一个单独的问题而不是作为另一个答案发布)建议使用 `WshShell` COM 对象的 `SendKeys` 方法来模拟为 ` runas 程序。这比 `runas` 在其命令行上接受密码更不安全,因为它会将击键发送到任何具有当前焦点的窗口!我希望不用说这是一个非常非常糟糕的主意,我希望没有人真正这样做。 (2认同)
  • Bill_Stewart +1 给出了一个很好的答案,尽管我不同意它。在这个问题上我支持@AndrejaDjokovic,这对于[单独的安全特定票据来说是一个很好的主题。](https://security.stackexchange.com/questions/233775/who-designer-or-user-应该对正确的安全使用负责)这是一个更广泛的问题,谁应该对应用程序“使用”的安全性负责? (2认同)
  • 微软将专业开发人员和系统管理员视为孩子。我们不是孩子,我们有充分的理由执行此类任务。如果开发人员因为疏忽而造成安全风险,问题在于开发人员,而不是操作系统。应该提供一个系统来以另一个用户的身份安全执行程序,例如 Linux 中的“sudo”。 (2认同)