我考虑了很久,思路如下:
(1)程序中启动控制台,运行runas命令。
(2)CMD窗口出来后,模拟键盘输入数字,输完后自动按回车。
我不知道你要运行什么程序,我拿XP自带的计算器(calc.exe)程序举例。
首先,新建一个名叫lulu的计算机用户,密码123;
写代码:
procedure TForm1.Button1Click(Sender: TObject)
begin
ShellExecute(Handle,nil,'cmd.exe','/K runas /user:lulu "cmd.exe cmd/k calc.exe"',nil,SW_NORMAL)
//以计算机名lulu的身羡耐稿份登陆电脑并且运行计算器calc.exe程序。
Sleep(2000)//延兄孝时2秒
//模拟键盘
keybd_event($97,0,0,0)//按下1
keybd_event($97,0,KEYEVENTF_KEYUP,0)//抬起1
keybd_event($98,0,0,0)//按下2
keybd_event($98,0,KEYEVENTF_KEYUP,0)//抬起2
keybd_event($99,0,0,0)//按下3
keybd_event($99,0,KEYEVENTF_KEYUP,0)//抬起3
Keybd_event(VK_RETURN,0,0,0)//回车键
end
程序写完后,测试,调用控制台启动runas没有问题,已经到了输入密码的位置。
结果,回车键是自动按了,但控制台没有接收到123。
看来是我模拟键盘输入的方法有问题。
将以下内容保存到文本,另存格式为vbs。{ENTER}这个表示物铅宴自罩银动按的回车Set objShell = CreateObject("WScript.Shell")
objShell.Run("runas /user:PC\administrator /savecred " &"d:\A.exe")
WScript.Sleep 1000
objShell.SendKeys "你的密码{ENTER}"激旁
WScript.Sleep 1000
批处理无法做到,我研究过了~~~能说说你是想做什么吗?
我前次用到这个命令是我想做一个批处理,
实现自动注销,才涉及到这个命令,但是研究了两天都没研究出结果,
最后我用另外的方法解决了。。。
可以去我的QQ 空间看看,
《监视指定进程--发现进程后立即注销/重启/关机》
这个批处理就是能涉及到这个命令的,后来用其他方法解决!
要用VBS的话,可以再网上搜搜啊...
不过我觉得一点都不好。没什么意思..
因为是靠虚拟按键 *** 作大雀。。
运行的时候要打开这个窗口才能自动输入密码...不行! 不适用!
下面是我在网上搜的:
方法一:使用VBS的SendKeys来输入密码
echo set pws=WScript.CreateObject("WScript.Shell")>%temp%\pws.vbs
echo pws.SendKeys "1{ENTER}">>%temp%\pws.vbs
wscript %temp%\pws.vbs&runas /u:test1 cmd.exe
方法二:使用/savecred参数
独立用户执行程序时第一次需要建立凭据,其间输入密码是不会回显的,你看不到,输了后回车即可。
以后在运行就不需要输磨仿誉入密码了。
runas /u:test1 cmd.exe 输入密码并回车
runas /savecred /u:test1 explorer 不用输密码了
方法三:用PsTools工具中的PsExec来替瞎段代 Runas
方法四:使用/sa参数
runas /u:admin /sa cmd
这是用VBS的:
http://kingoa.net/script/vbs/2009/1214/139.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)