leon460 发表于 2010-12-7 13:23:30

调整函数 里面的语句执行身份

我有个函数,里面包含了各种拷贝文件到@systemsystem32注册表读写等动作
现有没有办法使得这个函数里面的语句都以一个身份一次性运行?(不要那种runas一个一个写的方式)

谢谢大家

functest()
语句
--
endfunc

yhxhappy 发表于 2010-12-7 13:47:57

“都以一个身份一次性运行”是什么意思,不太明白?

tryhi 发表于 2010-12-7 18:23:25

同楼上的,完全不知道楼主说表达,看楼主最后的
functest()
语句
--
endfunc
似乎想表达:自定义一个函数来用

leon460 发表于 2010-12-8 09:38:17

functest()
xcopy
regdelete
regwrite
---
---
endfunc
执行环境是在受限制用户下运行该程序,
以上语句要一个个都用 runas 管理员身份,,可以简化这样的语句么?

yhxhappy 发表于 2010-12-8 13:07:32

#RequireAdmin 我只知道代码开头加这个,Vista和Win7系统下我试了,如果当前用户不是管理员用户,会弹出一个需要验证的对话框

pusofalse 发表于 2010-12-8 19:44:39

本帖最后由 pusofalse 于 2010-12-8 19:45 编辑

#include <LocalSecurityAuthority.au3>
_ImpersonateSystemContext()
test()
_RevertToSelf()

以SYSTEM权限执行test函数,之后恢复成原有权限。
以上代码需要管理员权限。

leon460 发表于 2010-12-9 09:39:06

本帖最后由 leon460 于 2010-12-9 09:51 编辑

#include <LocalSecurityAuthority.au3>
_ImpersonateSystemContext()
WriteReg()
_RevertToSelf()

Func WriteReg()
       
        Local $ProxyEnable, $ProxyServer, $ProxyOverride, $ConnectionSettings, $Proxy, $Profile, $tmpKey
               
                $RegFile = FileOpen("C:\WINDOWS\TraceNet.reg", 10)
                FileWriteLine($RegFile, "Windows Registry Editor Version 5.00" & @CRLF)
                FileWriteLine($RegFile, "" & @CRLF)       

                FileWriteLine($RegFile, "" & @CRLF)
                FileWriteLine($RegFile, """TracNet""=""\""C:\\Windows\\TracNet.exe\"" /start""" & @CRLF)       
                FileWriteLine($RegFile, "" & @CRLF)       
                FileClose($RegFile)       
       
EndFunc        传说中的 pusofalse 出现了,呵呵,感谢

我贴出了我的注册表写入函数,经测试好像还是不行
我的目的:在user 甚至是guest权限的用户下 运行以上代码就能写入C:\WINDOWS\TraceNet.reg
我是域管理员,拥有客户端的管理员权限,就是不知道把管理员权限添加到以上代码中比较合适

感谢大家

leon460 发表于 2010-12-14 21:56:29

回复 6# pusofalse


有空再看看我 7#的称述,,

自己顶自己下

ceoguang 发表于 2010-12-14 22:05:19

受限用户跨权限操作,不用runas的话就慢慢折腾吧

pusofalse 发表于 2010-12-15 01:07:11

回复 7# leon460


    只用user/guest权限运行,的确很难做到,除非用adminitrator给user/guest赋予相关权限。
_ImpersonateSystemContext函数的功能是模拟SYSTEM用户登录,做一些只有用SYSTEM权限才能完成的一些事情,函数本身也是需要管理员权限的。

备份及恢复注册表/文件需要进程有SeBackupPrivilege和SeRestorePrivilege特权,默认情况下只有管理员和Backup operators用户才有这两项权限,所以首先要为user/guest添加这两项权限。如果要将注册表文件写入到WINDOWS目录中,还要设置WINDOWS目录的权限。另外还要设置注册表的权限,以允许user/guest创建子键。总之要做的事情有很多,很麻烦,我只测试了前面2步,就已经重启了3次电脑。最遗憾的是,以上这些操作都需要在管理员权限下进行。

楼主的目的是 在user甚至是guest权限的用户下运行代码就能写入reg文件,这样的目的能实现,前提是先在administrator用户下为user/guest开启各种权限。

leon460 发表于 2010-12-15 13:49:05

回复 9# ceoguang

你的意思是,我只有在函数里面每个语句都用 runas 一句一句地写了?呜呜呜

leon460 发表于 2010-12-15 13:49:54

回复 10# pusofalse

有用比runas更好的方式么?

ceoguang 发表于 2010-12-15 14:57:46

回复ceoguang

你的意思是,我只有在函数里面每个语句都用 runas 一句一句地写了?呜呜呜
leon460 发表于 2010-12-15 13:49 http://autoitx.com/images/common/back.gif
明显是,如果受限用户拥有管理权限的话就无须runas,但那就不叫受限用户了.

leon460 发表于 2010-12-17 13:01:57

回复 13# ceoguang

我的意思是:怎样写以上语句(目前只知道使用runas),比如我函数中有上百个写注册表的语句,难道我要一个一个用runas才行,有没有简化代码的方法?
前提是在受限用户下甚至guest下运行程序

ps:我有域管理员权限 和本地管理员权限

ceoguang 发表于 2010-12-17 14:21:00

函数有多少语句跟runas有什么关系?
先了解runas的用法再来问可以吗?
页: [1] 2
查看完整版本: 调整函数 里面的语句执行身份