dtj56 发表于 2017-7-13 15:05:12

【已解决】貌似简单的RunAs问题,但无法解决,请大家帮忙

本帖最后由 dtj56 于 2017-7-19 14:14 编辑

下面的的程序,运行的结果是:弹出“运行安装程序出错!”的窗口,无法执行CMBCIE32.EXE这个安装程序。

已经反复检查,admin有该目录的完全控制权限;账号密码正确;测试程序,右击,选择以其他户运行,用admin可运行安装。

查询了好多有关RunAs的资料,无法解决,请大家帮忙看看,指出有误的地方。

=========程序=============
Dim $strPath
$strPath="d:\temp\CMBCIE32.exe"
if RunAs("admin", @ComputerName, "password", 0, $strPath)=0 Then
   MsgBox(4096,"","运行安装程序出错!")
EndIf
=========================

kk_lee69 发表于 2017-7-13 16:08:22

回复 1# dtj56

加個 工作目錄是看看工作目錄 設為跟執行程式同個目錄

dtj56 发表于 2017-7-13 16:16:57

回复 2# kk_lee69

改成以下,还是提示运行安装程序出错
RunAs("admin", @ComputerName, "password", 0, $strPath, "d:\temp")

kk_lee69 发表于 2017-7-13 17:21:32

本帖最后由 kk_lee69 于 2017-7-13 17:23 编辑

執行 你寫的AU3 那隻程式的身分 不是 admin 嗎

腳本 最前面 加上
#RequireAdmin

dtj56 发表于 2017-7-13 17:36:59

回复 4# kk_lee69

加上了也不成功。
写这个程序 的目的是想让一般的USER在没有管理员权限下也可以安装软件。
测试时,也尝试在管理员下运行程序,但也不成功。好奇怪。

tubaba 发表于 2017-7-16 23:24:29

你密码password?

phimiler 发表于 2017-7-17 10:34:13

回复 5# dtj56

你在管理员下运行这个程序失败,是因为你没有做判断,依旧运行了这个RunAs,改成下面:
If IsAdmin() then

phimiler 发表于 2017-7-17 10:39:20

回复 5# dtj56

你尝试在管理员下运行这段代码也出错,是因为没有做判断,依旧运行了这段RunAs,改成如下:
If IsAdmin() then
   Run("d:\temp\CMBCIE32.exe")
Else
RunAs(.......省略)
EndIf

你的代码看不出什么问题,UAC关闭了么?如果没有关闭UAC,关闭它,然后重启后再运行代码试试。

dtj56 发表于 2017-7-17 16:06:19

回复 8# phimiler


谢谢各位答复!按你的方式,run还是运行不了。

经测试,目前发现跟提权运行的程序有关。
从百度软件中心下载了2个程序,dopdf8.8.946.0.exe,BingDict_3.5.3.1600_Setup.exe。dopdf可以成功运行,Bingdict就失败。程序一样,就是提权程序不一样在。

请各位指教。

==========程序1:可以成功运行DOPDF============
Dim $strPath
$strPath="d:\temp\dopdf8.8.946.0.exe"
if RunAs("admin", @ComputerName, "password", 0, $strPath, "d:\temp")=0 Then
   MsgBox(4096,"","运行安装程序出错!")
EndIf
======================================

==========程序2:不能运行BINGDICT=============
Dim $strPath
$strPath="d:\temp\BingDict_3.5.3.1600_Setup.exe"
if RunAs("admin", @ComputerName, "password", 0, $strPath, "d:\temp")=0 Then
   MsgBox(4096,"","运行安装程序出错!")
EndIf
=======================================

phimiler 发表于 2017-7-18 13:42:30

回复 9# dtj56


我去百度软件中心下载了你说的这两个程序,版本号都一致。

然后我新建了个账户admin,设为管理员,然后RunAs(“admin”.............)失败
我改为RunAs("administrator"............)提示成功

因此你先启用“administrator”账户,然后设置密码,用这个账户的权限去写RunAs
分析下来,虽然新建了个管理员账户admin,但其权限和原始的administrator还是有差别的。

等你的反馈情况。

tubaba 发表于 2017-7-18 16:03:35

本帖最后由 tubaba 于 2017-7-18 16:05 编辑

BingDict_3.5.3.1600_Setup.exe 可以使用cmd引导


试试这个,勾上cmd引导,看看能不能运行.

dtj56 发表于 2017-7-18 18:24:40

回复 10# phimiler

已经解决了。十分感谢你的回复及建议!

解决方法:
到组策略中将“用户帐户控制: 对内置管理员帐户使用管理审批模式”设为禁用,就可以了。
我的系统是WIN10,设置如下图


原因就如你的建议,“登录的是管理员账户,但是在某些重要的位置,比如系统盘中,是没有完全的管理员权限的,所以在进行更改的时候要提供管理员权限。”

参考了文章:
https://answers.microsoft.com/zh-hans/windows/forum/windows_7-files/%C3%A4%C2%B8%C2%BA%C3%A4%C2%BB%E2%82%AC%C3%A4%C2%B9%CB%86%C3%A5%C5%93%C2%A8%C3%A5%CB%86%C2%A0/54f986ed-c127-44b4-9047-011b69bff619

https://answers.microsoft.com/zh-hans/windows/forum/windows_7-security/windows7%e7%9a%84%e7%ae%a1%e7%90%86%e7%bb%84/52870427-389b-41d3-adfd-560d08481673

https://answers.microsoft.com/zh-hans/windows/forum/windows8_1-security/%C3%A5%C2%B0%E2%80%A0%C3%A6%CB%86%E2%80%98%C3%A7%C5%A1%E2%80%9E%C3%A5%C2%BE%C2%AE%C3%A8%C2%BD%C2%AF/4350b527-2cb3-495b-b159-49f128356d1e

phimiler 发表于 2017-7-18 23:25:09

回复 12# dtj56


我确认了下,起作用的应该是:用户帐户控制:以管理员批准模式运行所有管理员 这一项在起作用,而不是 用户帐户控制: 对内置管理员帐户使用管理审批模式

用户帐户控制:以管理员批准模式运行所有管理员(禁用):可用非内置管理员成功运行RunAs
用户帐户控制:以管理员批准模式运行所有管理员(启用):只能用Administrator成功运行RunAs

你试试,我是在Win7上测试的,修改组策略后要重启才能生效。
页: [1]
查看完整版本: 【已解决】貌似简单的RunAs问题,但无法解决,请大家帮忙