场景概览

在搭建了 Active Directory 域控*的企业日常运维管理中,非特殊的用户账户,非人工干预下系统默认将其加入到 Users 标准用户组(系统默认,如果手动加入可选标准用户或管理员组),一般可以满足对使用者的权限管控和软件正常运行。但是在某些场景下可能会有难题:财务或物流部门的某些软件启动运行时弹窗提示需要管理员账户登录。

所以此时,我们需要 runas 命令来帮助我们做到有效的管控,给某个软件或允许特定程序以管理员权限启动运行,即无需赋予当前用户管理员所有权,也无需在场景软件中每次启动输入管理员密码,

解决方案

使用该命令后,首次成功启动之后,后续启动该命令即可省略原需要提供管理员账户的过程。

*该方法在非 Active Directory 环境也可使用。

命令语法

使用命令行终端 runas /?

runas /?
RUNAS 用法:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
        /user:<UserName> program

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
        /smartcard [/user:<UserName>] program

RUNAS /trustlevel:<TrustLevel> program

   /noprofile        指定不应该加载用户的配置文件。
                     这会加速应用程序加载,但
                     可能会造成一些应用程序运行不正常。
   /profile          指定应该加载用户的配置文件。
                     这是默认值。
   /env              要使用当前环境,而不是用户的环境。
   /netonly          只在指定的凭据限于远程访问的情况下才使用。
   /savecred         用用户以前保存的凭据。
   /smartcard        如果凭据是智能卡提供的,则使用这个选项。
   /user             <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
   /showtrustlevels  显示可以用作 /trustlevel 的参数的
                     信任级别。
   /trustlevel       <Level> 应该是在 /showtrustlevels 中枚举
                     的一个级别。
   program           EXE 的命令行。请参阅下面的例子

示例:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

注意:  只在得到提示时才输入用户的密码。
注意:  /profile 跟 /netonly 不兼容。
注意:  /savecred 跟 /smartcard 不兼容。

完整命令

将以下命令代码保存为 commandline.cmd

runas /savecred /user:administrator "cmd /c start C:\Progra~1\Easydatalink\YHG\USBMonitor.exe"

参数解析

/savecred
保存首次成功登录的账户信息;
该信息以加密方式保存在系统的凭据管理器;

/user:administrator
/user 执行方法;
administrator 授权本次执行的管理员账户,也可以是其他已经加入到管理员组的账户;
标准完整语法:/user:mymachine\administrator

"cmd /c start D:\Progra~1\Easydatalink\YHG\USBMonitor.exe"
cmd /c 以 cmd 方式运行后续的命令并终止,否则某些软件报错:740 当前的操作需要提升
start 结合上下文,在 cmd 中打开后续命令
C:\Progra~1\Easydatalink\YHG\USBMonitor.exe 执行程序绝对路径,Progra~1Program Files 的缩写,因为中间有空格。

路径缩写

C:\Progra~1\ == C:\Program Files
C:\Progra~2\ == C:\Program Files (x86)

PS C:\Users\hexingxing> cd C:\Progra~1
PS C:\Program Files> 
PS C:\Users\hexingxing> cd C:\Progra~2
PS C:\Program Files (x86)>

加密程序

该命令下虽然没有什么隐私或明文密码,但是对于一些稍微懂计算机逻辑的用户,就会随意将命令的运行程序换成其他,为了避免该隐患问题,有必要将该 .bat 批处理文件转换成 .exe 可执行应用程序,以保证不被篡改。

1. 裁剪应用程序的图标为圆角矩形;

选一张 32px~128px 像素的图片,裁剪为圆角形状,若图标是不带背景的实体图案则忽略;

推荐 128px,否则在高分辨率下显示模糊

2. 制作用于应用程序的图标;

将已经裁剪为圆角矩形的图片或实体图案图片转为用于程序的 .icon 图标;

3. 转换成为可执行的应用程序文件;

推荐以下两款软件用以将 .bat 程序转为 .exe 可执行程序。


友情提示:本站所有文章,如无特殊说明或标注,均为何星星原创发布。与此同时,趋于近年来本站的文章内容频繁被他站盗用与机器采集,现已全局禁用网站文字内容操作,了解详情或转载文章请 点此 继续!

2 条评论

zhangsir · 2023年11月22日 17:21

楼主你好,我是域控管理员,最近我发现一个比较严重的问题。启用软件安装限制后,用户没办法更新软件了,我现在暂时用笨办法,每半个月更新发布软件。让用户自己通过 “获得软件” 以重装的方式来达到更新的目的。如果是批量化的,如何做到呢,我试了注册表和路径,始终不行。一个个用工具来也是无法实现,用户数量 400 台。。。。。

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注