让user组用户登录时自动运行需要administrator权限的程序

今天忙了大半天,总算成功了,这里就说说,大家如果有更好的方法也回帖说说,我也好学习下:)
目的很简单,就是在启用UAC的情况下,让普通用户可以通过脚本运行需要管理员权限的程序,而不需要输入管理员密码
当然脚本要加密,不能泄露管理员密码
首先找到的是CPAU,发现没有效果,不知道为什么
又找到runasspc,开始提示权限不足,后来用管理员进行加密,总算成功
下载链接
http://robotronic.de/runasspc/runasspcEn.zip
软件主页
http://www.robotronic.de/runasspcEn.html
有图形界面帮助,使用很简单,这里稍微提一下
解压后进入目录,右键点击runasspcadmin.exe程序,选择”以管理员身份运行“,会弹出下面界面
这就很简单了,最上面选择要使用的程序
紧跟着下面输入administrator的密码,注意选择domain
中间的矩形框输入加密文件的名字,缺省保存在要运行的程序目录下面
然后点击最下面左边的”保存加密文件“,之后再点击右边的”测试加密文件“,应该所要运行的程序就会出现了
成功之后建立一个自动启动的注册表字符串就行了,键值写成类似下面的:

"D:\Program Files\runasspc\runasspc.exe" /cryptfile:"D:\Program Files\rmclock_235\RMClock.spc" /quiet

这样普通用户登录后也会自动运行需要管理员权限的程序了
一点点的不爽是runasspc会弹出一个命令行窗口,很快自动关闭,不影响使用
我想Windows应该支持Linux下面类似sudo的机制,只是不知道怎么用,知道的朋友帮忙说一下
转帖
用echo命令通过管道向runas命令发送密码的方法是不行的,因为runas绕过了IO控制台直接从键盘获取密码字符串,所以echo到控制台的密码 被忽略,而代以空密码进行用户验证。runas的这个机制也许正是为了避免在命令行使用密码进行其他用户权限的程序调用,因为不这样做有可能为命令行实现 的暴力破解程序留下可趁之机,并且避免了密码的暴露,但同时也降低了授权用户合法访问的便捷性。
方法一:使用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









本文转自 lcpljc 51CTO博客,原文链接:http://blog.51cto.com/lcpljc/1225892,如需转载请自行联系原作者
上一篇:手把手教你,使用 Nginx 搭配 Tomcat 实现负载均衡!(二)


下一篇:Android 6.0 运行时权限管理实践