win2000如何在power user下使用runas以管理员权限自动输入密码运行程序?

我需要在很多台电脑的poweruser下自动安装一个程序,但此程序只能在管理员权限下安装,如何实现?我想到用runas,但有2个问题不能解决:1.如何自动输入管理员用户名... 我需要在很多台电脑的power user下自动安装一个程序,但此程序只能在管理员权限下安装,如何实现?我想到用runas,但有2个问题不能解决:
1.如何自动输入管理员用户名何密码?
2.每台电脑的机器名都不同,在输入机器名处如何处理?
每台电脑的admin密码是一样的
展开
 我来答
百度网友1cc761bcc
2006-11-30
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
按以下文件的介绍,下载runasex.exe,然后做一个批处理文件,远程call这个批处理文件就可以了,给我加分吧!

通过系统命令RunAs指令,我们得以用一种DOS命令化的方法去完成这个操作, 不幸的事, 也仅此而已了, 这个命令依然需要每次都输入密码,即便你把它做成批处理也是一样. 但RunAs给我一个思路, 简单地我们把密码强制性输出到那个DOS窗口不就得了吗? 嗯, 起个名字, 就叫RunAsEX (EX好像是增强的意思吧...?我也不清楚)

没有办法, 走头无路之下, 只好自己写一个小程序了(很久没有玩这种命令行程序了,仿佛又回到了QB45那个干净的年代):

新建一个Win32 Console Application 的 VC工程, 选择MFC支持,因为虽然这是一个没有窗口的命令行程序, 但是我们依然需要大量的API来支撑.

// TODO: code your application's behavior here.
在这行之下, 添加以下代码:

if (argc==1)
{
cout<< "RunAsEx Written By Rockage\n";
cout<< "http://www.rockages.com\n";
cout<< "\n";
cout<< "Usage:\n";
cout<< " RunAsEx username,password,program\n";
cout<< "Example:\n";
cout<< " RunAsEx Administrator,123456,c:\\Progra~1\\intern~1\\iexplore.exe\n";

}

else

{
CString strCMD,strUser,strPasswd,strProgram;
int Pos[2];
char *temp1,temp2;
int i=0,j=0;

strCMD = argv[1];
temp1=(char*)(LPCTSTR)strCMD;

for (i=0;i<=strCMD.GetLength();i++)
{
temp2=temp1[i];
if (temp2==',')
{

Pos[j]=i;
j=j+1;
}

}
strUser=strCMD.Mid(0,Pos[0]);
strPasswd=strCMD.Mid(Pos[0]+1,Pos[1]-Pos[0]-1);
strProgram=strCMD.Mid(Pos[1]+1,strCMD.GetLength());
strCMD=CString("/c ") + CString("RunAs /user:") + strUser + " " + strProgram;

HINSTANCE hIns;
hIns=ShellExecute(NULL,"open",_T("cmd"),strCMD,NULL,SW_SHOWNORMAL);

char sWinPath[MAX_PATH];
CString sCMDpath;
GetSystemDirectory(sWinPath,MAX_PATH);
sCMDpath = CString(sWinPath) + "\\cmd.exe "; //合成cmd所在路径
::Sleep(800); //延时
HWND hWnd=::FindWindow(NULL,sCMDpath); //获得cmd窗口句柄

char *a;
a=(char*)(LPCTSTR)strPasswd;

for (i=0;i<=strPasswd.GetLength();i++)
::PostMessage(hWnd, WM_CHAR, a[i], 1);
::PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 1);

}
}

这个程序其实是一个很小的东东, 但它给了我一些启示, 第一就是我们可以通过SendMessage的方法强行为一个窗口(或一个进程)输送消息, 那么, 我们将不必需要真的采用键盘模拟或鼠标模拟的办法去真正"点击"窗口, 这实际上已经实现了"后台按键精灵",不仅如此,还可以实现"后台鼠标精灵"等等. 另外, 我总算搞清楚那些外挂版的QQ是什么原理了, 其实也就是消息, 外挂程序截获QQ.EXE的线程ID, 然后将本该属于QQ的消息钩到他们自己的程序里来, 然后选取感兴趣的消息, 经过"改装"之后传回给QQ.EXE, 这样间接实现了修改的目的. 然后还有一些传奇外挂也是运用这个原理, 总的来说钩子函数不是特别复杂, 钩子函数只是一种特殊的回调函数, 鉴于可爱的VB在经我多次试验下证明对钩子的支持很不好, 不仅如此, VB对于底层的操作还有多线程的支持都比较让人失望, 所以接下来的讨论都可能以VC++为主了.基本思路, 从形式参数argc那里获得命令行参数, 共三个用逗号隔开,用一个小循环把他们分解为三个变量:

strUser, strPasswd, strProgram

用API函数 "ShellExecute" 启动cmd进程, 将RunAs指令以cmd的参数形式打开Dos Box, 延迟一点点时间让窗口创建完毕, 用API函数 "FindWindows"查找到这个DOS BOX的句柄, 然后用SendMessage强制给该DosBox输入键盘消息, 消息内容正是strPasswd, 最后小小的强制性敲一个回车, 完成.

真正用的时候, 方法是:

RunAsEX 用户名, 密码, 程序路径

例如, 目前我的登录帐号是Rockage, 我需要将IE以Administrator帐号打开, Administrator的密码是123456,

IE的路径是c:\Progra~1\intern~1\iexplore.exe

我们可以这么做:

RunAsEx Administrator,123456,c:\Progra~1\intern~1\iexplore.exe

记住! 长文件名必须使用DOS的8.3格式, 例如Program Files文件夹, 必须写为Progra~1, 这个并非我的程序不足, 而是Windows XP提供的RunAs命令本就不接受长文件格式.

更好一点的办法是把上面那行指令写入一个BAT文件里, 拖到桌面, 这就一劳永逸了...

程序下载:

http://www.rockages.com/upload/RunAsEX.exe

参考资料: http://www.stoneren.com/bbs/topic.asp?bbsid=5&topicid=4467

匿名用户
2006-11-24
展开全部
这个问题打字太麻烦.
解决这个的办法可以用BAIDU搜索相关内容.电脑报上就有解决办法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pine945
2006-11-24 · TA获得超过229个赞
知道小有建树答主
回答量:511
采纳率:0%
帮助的人:344万
展开全部
用域的软件分发功能,
不知道市面上有没有一种专门做软件分发的功能的软件,

对了,你的每台电脑的admin帐号一样吗?这样情况更加复杂了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式