找回密码
 加入
搜索
查看: 4080|回复: 7

[AU3基础] win7域环境下普通用户runas提权二次登录问题

    [复制链接]
发表于 2018-4-18 15:59:18 | 显示全部楼层 |阅读模式
本帖最后由 xyx115 于 2018-4-19 21:13 编辑

感谢大家关注此帖。
应用场景:
公司域环境,普通用户没有权限安装一些软件(使用管理员权限安装的软件或者运行库)。

为了简化操作,让普通用户能够直接安装这些软件,决定使用AU3解决问题。

搜索后发现runas可以解决这类问题。
遇到问题:
使用如下代码,可以调用a.bat(这个a.bat里面写入了安装运行库的静默调用命令等),但是会弹出提权的窗口等待输入管理员账号和密码
如果把中间的ShellExecute($soft, "", @ScriptDir & "\")改为$soft,则$soft不会被执行。
Global $soft = @ScriptDir & "\a.bat"
Local $user = 'admin', $domo = 'domo', $pass = 'password'

If IsAdmin() Then

        RunAsWait($user, $domo, $pass, 0, ShellExecute($soft, "", @ScriptDir & ""), @ScriptDir & "")
        MsgBox(64, 0, '运行结束', 1)

Else

        Local $pid = RunAs($user, $domo, $pass, 0, ShellExecute($soft, "", @ScriptDir & ""), @ScriptDir & "")
        If $pid = 0 Then
                MsgBox(48, 0, "获取权限失败,请联系管理员", 3)
        Else
                MsgBox(64, 0, '运行结束', 1)
        EndIf

EndIf
在au3帮助文档中提到二次登录,但是不明白具体用法。

论坛中看遍了每一个关于runas的用法,都没有关于二次登录的问题。请各位大佬指教!

RunAsWait ( "用户名", "域", "密码", 登录, "程序" [, "工作目录" [, 显示 [, 选项 ]]] )
如果路径包含空格,必须添加英文引号.

必须指定当前用户能够访问的工作目录, 否则函数将失败.

建议只加载需要的用户配置文件. 在内存允许的情况下, 配置文件可以停留在内存中.
如果使用 RunAs() 的脚本正好在运行在系统帐户中(例如, 脚本作为一个服务在运行中),
并且加载了用户的配置文件, 则你必须注意使脚本继续运行, 直到子进程关闭.

以管理员方式运行, 必须激活二次登录( RunAs() )服务, 否则此函数将失败. 这并不适用于作为系统帐户运行.

执行指定程序后, 脚本会暂停, 直到该程序终止. 要运行程序后立即继续执行脚本, 则使用 RunAs() 函数代替.

一些程序运行时会立即出现返回, 即使他们仍然在运行, 这些程序会产生另一个进程. 可以使用 ProcessWaitClose() 函数来处理这些案例.

"加载配置文件"和"使用网络证书"选择是不兼容的. 同时使用会产生不确定的结果.

在 Windows XP 系统有一个防止工作顺序重定向和工作标志的问题. 请参阅 Microsoft 知识库文章 KB818858, 详细了解受到影响的版本, 以及为解决问题的修补程序.
用户运行 Windows XP SP2 及更高版本, 或 Windows Vista 或更高版本 不会受此影响.
发表于 2018-4-19 14:56:03 | 显示全部楼层
看不太明白你的问题
脚本前可能要增加 #RequireAdmin
改为$soft ,我在管理员账号下能执行。
 楼主| 发表于 2018-4-19 16:31:55 | 显示全部楼层
本帖最后由 xyx115 于 2018-4-19 16:36 编辑

回复 2# 志艺风云

我的软件需要达到的目的如下:
普通用户点击此程序即可安装运行库程序

具体环境如下:
1.目前计算机加入域环境
2.运行库等一些程序的运行和安装需要管理员权限
3.因为次数频繁,机器数量多,想做成程序,让用户点击即可自动无需输入管理员账号和密码,自动安装程序。

    脚本前如果添加#RequireAdmin,则程序运行,就要输入具有管理员权限的账号和密码,以启动程序。

现在目前暂时调用bat处理了。如果有哪位大佬知道方法,请赐教。
发表于 2018-4-20 13:05:44 | 显示全部楼层
本帖最后由 志艺风云 于 2018-4-20 14:17 编辑



你说的应该是要先 以其它用户身份运行 后再 以管理员身份运行。没环境试,不知道 以其它用户身份运行(其它用户是管理员权限)是不是直接同时用管理员身份运行了。
你当前账号就算是管理员权限的,运行有盾牌图标的程序也是要用 以管理员身份运行 的(启用了账号控制)。
两个简单的区别,一个是有没有管理员权限,一个是使不使用管理员权限(账号控制)。你可以试一下关闭账号控制后试试 RunAs($user, $domo, $pass, 0, “软件名”, @ScriptDir)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2018-4-20 13:12:24 | 显示全部楼层
本帖最后由 志艺风云 于 2018-4-20 13:17 编辑

如果你启用了账号控制(UAC),即使你是管理员账号,也是要用 #RequireAdmin 来提权的。否则IsAdmin()还是 当前用户没有管理员权限。
发表于 2018-4-20 14:00:37 | 显示全部楼层
我也遇到了这个问题。runas 是没有然后作用的 里面的参数 0 1 2  都是 试了,2的话就和直接点击一样 要求输入管理员账号密码,0的话 根本就不会运行。也不知道问题出在哪里。
发表于 2018-4-25 16:33:43 | 显示全部楼层
感谢大家关注此帖。
应用场景:
公司域环境,普通用户没有权限安装一些软件(使用管理员权限安装的软件或 ...
xyx115 发表于 2018-4-18 15:59



    试试:   RunAs("user","domain.com.cn","password",0,@ScriptDir&"\setup.exe",@ScriptDir)
发表于 2018-5-20 08:37:46 | 显示全部楼层
http://www.autoitx.com/forum.php ... amp;fromuid=7638255 试试这个.公司也有这种需求,当时写的.但没在WIN7测试,可能需要关闭UAC.也可能不需要,程序可以创建快捷方式,引导目标程序以何种帐户运行.但由于程序会把配置写入自身,因此.每次修改配置后,MD5会变化哦.请知晓.是杀软重点清除对象
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 17:41 , Processed in 0.071494 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表