【问题标题】:How to run as admin only one line in batch file?如何在批处理文件中仅以管理员身份运行一行?
【发布时间】:2014-04-09 21:23:16
【问题描述】:

这是我在这里的第一个问题,所以在批评任何事情时,请尽量保持建设性。

我正在尝试使用一个批处理 (.bat) 文件使我的便携式版本的 Wireshark 工作。这是我当前的代码:

@echo on
@echo _wireshark is starting_
@echo ...
@echo off
runas /noprofile /savecred /user:Michal "cmd /c sc stop npf"
start "" /wait WiresharkPortable.exe
runas /noprofile /savecred /user:Michal "cmd /c sc stop npf"
@echo on
@echo _Thanks for sniffing around_
@echo _Bye now.
@pause

runas 行有问题,据说它们会打开新的 cmd 窗口,但 sc stop npf未执行(使用 cmd /k 选项检查)。

谁能帮我找出我的错误?

问候, 迈克尔

【问题讨论】:

  • 请修正您的问题标题。应该是个问题……
  • runas /noprofile /savecred /user:Michal "cmd /c pause"
  • 现在我阅读了您的问题标题 - 您知道问题所在。您没有足够的权限运行sc.exe
  • 新的 cmd 窗口打开并显示消息“按任意键继续...” - 所以它工作正常。但是,我的线路仍然无法正常工作。目的是 1) 能够使用一个 .bat 文件打开wireshark; 2)这个文件应该启动npf服务,运行wireshark,等到它关闭并卸载npf驱动。只是想提一下,当手动逐步完成时,整个过程可以正常工作。
  • 我没有?我的用户名 Michal 拥有管理员权限。

标签: batch-file command-line wireshark runas


【解决方案1】:

首先,你真的不需要在每一行之前加上@,你真的只需要在开头

@ echo off :: rest of code here

所以我不会在所有内容之前输入@,而是输入

@echo off
echo _wireshark is starting_
echo ...
runas /noprofile /savecred /user:Michal "cmd /c sc stop npf"
start "" /wait WiresharkPortable.exe
runas /noprofile /savecred /user:Michal "cmd /c sc stop npf"
echo _Thanks for sniffing around_
echo _Bye now.
pause

我还会从头到尾删除所有不必要的@echo on(off) 命令,一是因为它可以更快更容易地键入,二是它看起来更整洁。

你也可能想做pause>nul,这只是我的偏好,所以说实话并不那么重要。

【讨论】:

  • 感谢有用的提示。然而,它们并没有解决我最初的问题。
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2013-09-16
  • 2015-02-09
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多