找回密码
 加入
搜索
查看: 1501|回复: 9

请问autoit能不能互相嵌套

[复制链接]
发表于 2009-4-9 17:15:05 | 显示全部楼层 |阅读模式
比如MsgBox(0,"file_size",@UserName),_FileWriteLog(@ScriptDir & "\my.log",@UserName)
这些我想用管理员权限去执行
RunAs("administrator", @Computername, "123", _FileWriteLog(@ScriptDir & "\my.log",@UserName))
不知道正确写法是怎么写,我看以前的版本还有RunAsSet可以设置身份,怎么版本高了好像反而更不方便了?
或者我写的这个程序要在普通用户下,用管理员权限去执行

是不是在程序开头加个什么参数把环境给改了?

[ 本帖最后由 liangxm 于 2009-4-13 18:19 编辑 ]
 楼主| 发表于 2009-4-9 17:33:30 | 显示全部楼层
RunAs($sUserName, @ComputerName, $sPassword, 0, @COMSPEC &  _FileWriteLog(@ScriptDir & "\my.log",@UserName))

??
发表于 2009-4-9 19:53:25 | 显示全部楼层
16th May, 2008 - v3.2.12.0

AutoIt:

RunAsSet() has been removed. Use the new RunAs() and RunAsWait() functions instead. They have been enhanced with slightly better security (It is still not recommended to store important passwords in your scripts) and more functionality.


开发人员,叫你使用runas和runaswait来代替
 楼主| 发表于 2009-4-10 10:07:44 | 显示全部楼层
恩,我看到了,但如何代替呢?
老版的说:
; 使用本地管理员帐号(adminstrator)
RunAsSet("Administrator", @Computername, "adminpassword")
; 以管理员的身份运行注册表编辑器
RunWait("regedit.exe")
; 重设用户身份
RunAsSet()


新版的我用:
Local $sUserName = "administrator"
Local $sPassword = "123456"
RunAs($sUserName, @ComputerName, $sPassword, 0, @COMSPEC &  _FileWriteLog(@SystemDir & "\my.log",@UserName))

不能在@SystemDir 里面创建my.log文件,所以我想应该是没有使用管理员权限

; Run a command prompt as the other user.
Local $pid = RunAsWait($sUserName, @ComputerName, $sPassword, 0, @COMSPEC &  _FileWriteLog(@SystemDir & "\my.log",@UserName))
; Wait for the process to close.
ProcessWaitClose($pid)

这么写也没法创建


我不知道是不是哪写错了?请高手提示一下~
发表于 2009-4-10 21:34:08 | 显示全部楼层
这个问题与嵌套无关,与版本无关。请仔细阅读RunAs的语法。
RunAs( "username", "domain", "password", logon_flags, "filename" [, "workingdir" [, flag[, standard_i/o_flag]]] )
看到没有?第5个参数是filename。你写个函数_FileWriteLog结果就是执行错误。同样,@COMSPEC &  _FileWriteLog 这种语句你认为会执行成功吗?

请注意,RunAs的作用是让Windows以另一用户权限去运行一个程序。
发表于 2009-4-11 14:42:39 | 显示全部楼层
代码问题,非函数问题
 楼主| 发表于 2009-4-13 09:04:12 | 显示全部楼层
原帖由 sensel 于 2009-4-10 21:34 发表
这个问题与嵌套无关,与版本无关。请仔细阅读RunAs的语法。
RunAs( "username", "domain", "password", logon_flags, "filename" [, "workingdir" [, flag[, standard_i/o_flag]]] )
看到没有?第5个参数是filenam ...



呵呵,我不知道能不能用runas去执行一条指定用户的命令,试了一下发现不行,不知道有没有办法实现呢?

还是我写个命令的exe,然后再让runas去执行这个exe?
 楼主| 发表于 2009-4-13 09:09:55 | 显示全部楼层
原帖由 thesnow 于 2009-4-11 14:42 发表
代码问题,非函数问题


呵呵,不要话说一半啊~
发表于 2009-4-13 22:55:50 | 显示全部楼层
无语。。。

RunAsWait("Administrator", @ComputerName, "adminpassword", 0, "regedit.exe")
成功,因为 regedit.exe 是一个程序
RunAsWait("Administrator", @ComputerName, "adminpassword", 0, _FileWriteLog(@ScriptDir & "\my.log")
失败,因为 _FileWriteLog 不是程序
RunAsWait("Administrator", @ComputerName, "adminpassword", 0, @ComSpec & _FileWriteLog(@SystemDir & "\my.log"))
莫名其妙,@ComSpec = @SystemDir & "\cmd.exe",cmd.exe 可以执行 au3 内的函数吗?
 楼主| 发表于 2009-4-14 09:21:35 | 显示全部楼层
就是想试试,qqq~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-1-12 22:49 , Processed in 0.081854 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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