我想知道如何在 Windows 的命令提示符 (CMD) 中以编程方式执行命令(如“dir C:\”或“shutdown -r”等)并检索结果输出,而不显示黑色的 CMD 窗口当然。
我怀疑->this link<-包含所需 API 的列表,但我不确定要选择哪些 API,因此需要您的帮助。
基本上这就是我需要它的目的:我想编写简单的客户端-服务器应用程序 (WinSock),用户可以在其中坐在客户端并在服务器的命令提示符中执行命令(并从中读取回复)。是的 - 就像 Telnet 一样工作,但没有 Telnet,只有 Win32 API。
假设用户想在服务器上执行“dir”命令。他在客户端应用程序上键入“dir”,客户端应用程序将请求发送到服务器应用程序,命令将在服务器应用程序中执行(就好像它是在服务器的命令提示符下物理键入的一样),输出文本将被发送回客户端应用程序。
最佳答案
您基本上是在尝试重新实现 netcat 的许多可能用途之一。 .通过在命令提示符下在windows系统上运行:
nc -l -L -e cmd -p 5555
然后从另一个系统运行
nc 192.168.1.xxx 5555
192.168.1.xxx
是 windows 机器的 IP 地址,你可以做你正在谈论的事情:无论你输入什么,都会在 windows 机器上“输入”,你会得到远程执行命令的输出。您还可以在隐藏窗口中运行 netcat。
请注意,由于此功能,某些防病毒软件会阻止 netcat 程序...它显然已被恶意软件用来将受害者的 PC 转换为奴隶机器人。
另请注意,将输入/输出直接路由到 cmd
(XP shell)非常危险,因为没有任何类型的身份验证:任何人 都可以连接到端口 5555并在机器上执行命令,除非您处于非常受控的环境中,否则您真的不想允许这样做。
关于c++ - 如何以编程方式模拟与控制台的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893493/