企业环境中,为了安全起见一般都没有赋予域用户或者企业的PC客户端用户管理员权限。

但偶尔会有个别的程序一定需要管理员身份才能执行,如财务某些程序或专业的应用程序。那么如何不赋予用户管理员权限及密码但又可以让用户有权限执行指定的程序呢?

下面就介绍几种主流的办法:

1,runas命令(微软原生命令):

用法:
runas /user:user_name abc.exe
user_name是要使用哪个用户运行该程序就写上哪个用户名,abc.exe是程序名,如果abc.exe不在system32目录下的话,需要指明具体路径。

在cmd中输入runas,即可查看它的帮助说明及使用示例:

RUNAS [/profile] [/env] [/netonly] /user: program
/profile 如果需要加载用户的配置文件
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用
/user 应使用 USER@DOMAIN 或 DOMAINUSER 形式
program EXE. 的命令行。参阅下面的例子
例如:

runas /profile /user:mymachineadministrator cmd
runas /profile /env /user:mydomainadmin "mmc %windir%system32dsa.msc"
runas /env /user:[email protected] "notepad "my file.txt""
注意: 只有在被提示时才输入用户的密码。
注意: USER@DOMAIN 与 /netonly 不兼容。

但由于RUNAS每次都要自己输入密码,很麻烦我们可以添加参数(runas /savecred )来保存凭据。

例:
runas /user:administrator /savecred "D:\Program Files\AnyDesk.exe"

可以将以上命令保存为批处理,这样就可以用administrator用户权限来启动指定的那个程序了。(直接执行,不再需要用户输入密码)


2、使用lsrunase,这是第三方程序,需要下载。自带 LSencrypt 用来生成加密的字串。
用法:
lsrunase.exe /user:administrator /password:ABCDqfmI /domain: /command:"D:\Program Files\AnyDesk.exe" /runpath:"D:\Program Files"

所有的参数必须齐全,其中:
user 为运行的账号
password 为密码加密后的字串
domain 为机器名或域名,也可留空代表本机
command 为要运行的程序名,如果携带参数需要在命令的首尾加引号
runpath 为程序启动的路径
特点:可以较完美的替代 runas,并避免直接将密码明文保存在脚本中。


3、使用 cpau,cpau 也是一个替代 runas 的程序,并且功能强大,可以使用加密的密码。
用法:
cpau -u administrator -p password -ex notepad -file start_notepad.txt -enc
cpau -file start_notepad.txt -dec
以上命令可以先将要执行的指令加密保存为一个文件,执行时载入此文件。
特点:可以保护执行的脚本及命令不被他人查看,但在使用网络路径时存在一些问题。