请问有谁用过P版的_CreateProcessAsUser这个函数?(创建指定用户权限进程)(已解决)
本帖最后由 txm888 于 2011-10-18 12:23 编辑目前我有一进程是system的,但我想用该进程创建新进程为administrator进程的,请问用该函数如何实现?最好是能做个简单例子出来,我弄了很久,,,报call错误,不知道是哪里设置得不对呢,谢谢了
该函数所用到的UDF,顺便放这里下。。。嘻嘻
本帖最后由 pusofalse 于 2011-10-18 10:37 编辑
不要用这个库了,用lsasecur.au3,此处下载:http://www.autoitx.com/thread-20442-1-1.html
#RequireAdmin
#include <lsasecur.au3>
; 将自身进程提升为系统级权限。
If @UserName <> "SYSTEM" Then
_SeCreateSystemProcess(@AutoItExe & " " & $CmdLineRaw)
Exit
EndIf
; 获取explorer.exe进程的安全令牌,如果explorer.exe所属用户为Administrator,那么新创建的进程也是Administrator。如果explorer.exe为Guest,那么新进程也将是Guest。
Local $hToken = _SeOpenProcessToken("explorer.exe")
; 模拟explorer.exe进程的用户登录,此时本进程的权限会降低/提升到 同explorer.exe一样的权限。
_SeImpersonateLoggedOnUser($hToken)
; 使用explorer.exe的安全令牌创建notepad.exe进程。函数将返回进程/线程的句柄和ID。
Local $tProcess = _SeCreateUserProcess($hToken, "C:\WINDOWS\notepad.exe")
If ($tProcess == 0) Then
MsgBox(48, "Error", _SeFormatMsg())
Else
_SeCloseHandle( DllStructGetData($tProcess, "Process"))
_SeCloseHandle( DllStructGetData($tProcess, "Thread"))
MsgBox(48, "OK", "进程ID:" & DllStructGetData($tProcess, "ProcessID"))
EndIf
; 恢复本进程原有的权限。
_SeRevertToSelf()
_SeCloseHandle($hToken)
_SeCreateUserProcess是一个异常强大的函数,调用这个函数可以创建任意用户、任意权限的进程。最重要的是它的第一个参数$hToken,将这个参数设为受限令牌的句柄,那么新创建的进程就不能执行一些特权操作,可以借此达到反病毒的效果。 {:face (356):} 回复 2# pusofalse
谢谢P版,您太热情了,,,现在改用新库提示N多重复声明变量的东东,如果混合用的话,因为之前我用的LocalSecurityAuthority.au3 库里的创建服务、注册表权限、修改服务等一些相关的函数,现在换成第二版,还有很多要改,,,回头测试新版,谢谢啦,P版,我爱你 回复 4# txm888
你可以把用到的几个 lsasecur.au3 中的函数拿出来放进你自己的脚本中,不必改动很多。 回复 5# pusofalse
明白,谢谢P版,,,真强大啊,我一直视您为神{:face (427):} 回复 6# txm888
不要再说这种贻笑大方的话了,你让那些论坛中不出世的高人情何以堪,让人笑话。 回复 7# pusofalse
成功!!!!!通过P版的帮助与指示,成功实现跨权限创建指定权限进程的问题,再次感谢!{:face (411):} 回复 3# txm888
我的钱我的钱啊,,,就这样打水漂了,555555本来我是回错了消息,结果我将错误的消息编辑成了个表情,被你误认为是在刷分,其实不是哈,{:face (319):} 有时间详细测试一下。。。
页:
[1]