首页
社区
课程
招聘
[求助]远程CMD y|n交互 方法求解
发表于: 2013-4-29 23:06 12533

[求助]远程CMD y|n交互 方法求解

2013-4-29 23:06
12533
各位大牛,新手小弟最近闲着没事,做了一个远程CMD的程序,用来练手,但是碰到了一个棘手的问题,不懂怎么解决。以下详细描述:

我做远程CMD的思路是,先用匿名管道对CMD.exe输入指令和读取指令运行结果,然后再结合上Socket模块。

在测试匿名管道模块的时候,在单机上测试,没有任何问题,包括y|n交互,也是可行的
(小弟所说的y|n交互,即等待用户输入y或n。如下图所示

但是当我将匿名管道模块与Socket结合的时候,问题就来了。
输入别的指令(如:ipconfig、dir等)Socket都能正常的将远程电脑的CMD执行结果传递回本机,并显示。但是我输入带有y|n交互功能的指令的时候(如:sc等),Socket只传回y|n之前的内容,无论我在本机如何输入y或n,都没有反应了。

后来我仔细追踪了一下,发现当我在本机输入带有y|n交互功能的指令的时候,输入焦点锁定到远端电脑的CMD了,我在本机输入啥都无效,必须在远端电脑的CMD上敲击y或n,Socket模块才正常运行,并传回CMD剩下的那部分指令。

能不能有啥办法,能够解决这个问题?
使得我在本机上也能输入y或n,进而印象到远程CMD的执行结果。

小弟在这里,拜谢大家了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 268
活跃值: (448)
能力值: ( LV9,RANK:375 )
在线值:
发帖
回帖
粉丝
2
你在输入命令的时候,直接附带上y|n参数
2013-4-30 07:57
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
管道连[S|Y ]这一行的能容都不能获取的到吗? 这不科学
2013-4-30 08:52
0
雪    币: 11
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
stderr 有木有重定向 ?
2013-4-30 09:57
0
雪    币: 822
活跃值: (279)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=Breaker!;1172044]管道连[S|Y ]这一行的能容都不能获取的到吗? 这不科学[/QUOTE]

no no no
管道是能够读取到[S|Y ]这一行这一行的内容的 然后将这一行的内容原原本本的经过socket发送给远程电脑
问题是我在远程电脑看到[S|Y ]这一行的内容后,紧接着输入y或n,没有任何效果
2013-4-30 20:11
0
雪    币: 822
活跃值: (279)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
您能说的再详细一点吗
2013-5-1 20:52
0
雪    币: 27
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这叫管道嵌套,你用匿名管道或者命名管道是无法嵌套的。包括你在执行FTP、SC这种命令的时候都是这个情况。
你如果想实现这个功能,需要直接读取并传输控制台内字符。
2013-5-2 08:20
0
雪    币: 822
活跃值: (279)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
对对对 您说的太对了 我就是卡在这个问题上了

但是您说的这个“直接读取并传输控制台内字符”我有些不解,能麻烦您再多说两句吗
2013-5-3 20:33
0
雪    币: 27
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
主要API
CreateConsoleScreenBuffer
ReadConsoleInput
WriteConsoleOutputAttribute
2013-5-3 21:49
0
雪    币: 822
活跃值: (279)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
恩恩 好的 太感谢您了 我学习学习
2013-5-3 23:41
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不知yyyang兄学习得怎样?可否分享下经验?我最近也遇到了类似的问题。
2013-6-26 16:40
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
您可以说得再详细些么?我也遇到了类似的问题,纠结中。。。
2013-6-26 16:41
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
其实这就是一个shell交互问题,为了处理可交互式的shell命令,一般都是采用的直接读console字符的方式,不知道还有其它高招没?没逆过windows的telnet srv,不知道它又是怎么实现的?
2013-6-26 17:21
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
请问这个直接读取console字符是怎样的呢?用的哪个函数?是ReadConsoleInput吗?
2013-6-26 17:31
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
ReadConsoleOutput
2013-7-15 10:29
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Thank you!
2013-7-25 17:03
0
游客
登录 | 注册 方可回帖
返回
//