管理员权限进程创建普通权限进程。

LiuQijun 2011-04-15 09:50:25
一个用管理员身份运行的进程,在这个进程里面怎么创建一个标准用户权限的进程,也就是从高权限进程创建低权限进程。
...全文
336 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoXiaoRab 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lqjunf 的回复:]
引用 4 楼 lactoferrin 的回复:

引用楼主 lqjunf 的回复:
一个用管理员身份运行的进程,在这个进程里面怎么创建一个标准用户权限的进程,也就是从高权限进程创建低权限进程。

用CreateRestrictedToken创建一个受限token,然后用CreateProcessAsUser创建进程

这个方法试过了,CreateProcessAsUser的使用好像也……
[/Quote]
例子很多,自己去Google

http://topic.csdn.net/u/20091118/17/8614965e-0a50-4a3d-891b-ff61bf76902c.html
Lactoferrin 2011-04-15
  • 打赏
  • 举报
回复
CreateProcessAsUser无需特殊特权,只要传入有效的token即可

现在没时间做,这是我以前用PowerBasic编的

#Compile Exe
#Dim All
%USEMACROS=1
#If Not %Def(%PB_CC32)
%PB_CC32=1
#EndIf
%NOGDI=1
%NOMMIDS=1
#Include Once "WIN32API.INC"

Declare Function CreateRestrictedToken Lib "ADVAPI32.DLL" Alias "CreateRestrictedToken"(ByVal ExistingTokenHandle As Dword,ByVal Flags As Dword,ByVal DisableSidCount As Dword,SidsToDisable As Any,ByVal DeletePrivilegeCount As Dword, _
PrivilegesToDelete As Any,ByVal RestrictedSidCount As Dword,SidsToRestrict As Any,NewTokenHandle As Dword) As Long

Declare Function CreateProcessAsUserW Lib "ADVAPI32.DLL" Alias "CreateProcessAsUserW" (ByVal TokenHandle As Dword,ByVal lpApplicationName As Dword,ByVal lpCommandLine As Dword,ByVal lpProcessAttributes As Dword,ByVal lpThreadAttributes As Dword, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Dword, lpEnvironment As Any,ByVal lpCurrentDirectory As Dword, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long



Function PBMain () As Long
Dim hToken As Dword,hNewToken As Dword,Length As Dword,CmdLine$,SI As STARTUPINFO,PI As PROCESS_INFORMATION,SidAttrib As SID_AND_ATTRIBUTES,Privileges(0 To 25) As LUID_AND_ATTRIBUTES
Dim ia As SID_IDENTIFIER_AUTHORITY
If Len(Command$)=0 Then
MsgBox "Create a process with restricted privileges."+$CrLf+$CrLf+"Usage:"+$CrLf+"RunRestrained [Command Line]"+$CrLf+$CrLf+"Sample:"+$CrLf+"RunRestrained cmd.exe /k dir c:\",,"RunRestrained"
ExitProcess 0
End If
If OpenProcessToken(-1,%TOKEN_ALL_ACCESS,hToken) Then
ia.Value(0)=0
ia.Value(1)=0
ia.Value(2)=0
ia.Value(3)=0
ia.Value(4)=0
ia.Value(5)=5
AllocateAndInitializeSid ia,2,%SECURITY_BUILTIN_DOMAIN_RID,%DOMAIN_ALIAS_RID_ADMINS,0,0,0,0,0,0,SidAttrib.pSid
SidAttrib.Attributes=0
Privileges(0).pLuid.LowPart=2
Privileges(1).pLuid.LowPart=3
Privileges(2).pLuid.LowPart=4
Privileges(3).pLuid.LowPart=5
Privileges(4).pLuid.LowPart=6
Privileges(5).pLuid.LowPart=7
Privileges(6).pLuid.LowPart=8
Privileges(7).pLuid.LowPart=9
Privileges(8).pLuid.LowPart=10
Privileges(9).pLuid.LowPart=11
Privileges(10).pLuid.LowPart=12
Privileges(11).pLuid.LowPart=13
Privileges(12).pLuid.LowPart=14
Privileges(13).pLuid.LowPart=15
Privileges(14).pLuid.LowPart=16
Privileges(15).pLuid.LowPart=17
Privileges(16).pLuid.LowPart=18
Privileges(17).pLuid.LowPart=20
Privileges(18).pLuid.LowPart=21
Privileges(19).pLuid.LowPart=22
Privileges(20).pLuid.LowPart=24
Privileges(21).pLuid.LowPart=26
Privileges(22).pLuid.LowPart=27
Privileges(23).pLuid.LowPart=28
Privileges(24).pLuid.LowPart=29
Privileges(25).pLuid.LowPart=30
If CreateRestrictedToken(hToken,0,1,SidAttrib,26,Privileges(0),0,ByVal 0,hNewToken) Then
CmdLine$=UCode$(Command$)
SI.cb=SizeOf(STARTUPINFO)
CreateProcessAsUserW hNewToken,0,StrPtr(CmdLine$),0,0,0,0,ByVal 0,0,SI,PI
CloseHandle hToken
CloseHandle hNewToken
CloseHandle PI.hThread
CloseHandle PI.hProcess
End If
FreeSid SidAttrib.pSid
End If
End Function

LiuQijun 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lactoferrin 的回复:]

引用楼主 lqjunf 的回复:
一个用管理员身份运行的进程,在这个进程里面怎么创建一个标准用户权限的进程,也就是从高权限进程创建低权限进程。

用CreateRestrictedToken创建一个受限token,然后用CreateProcessAsUser创建进程
[/Quote]
这个方法试过了,CreateProcessAsUser的使用好像也有权限方面的问题,能不能给些例子。
Lactoferrin 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 lqjunf 的回复:]
一个用管理员身份运行的进程,在这个进程里面怎么创建一个标准用户权限的进程,也就是从高权限进程创建低权限进程。
[/Quote]
用CreateRestrictedToken创建一个受限token,然后用CreateProcessAsUser创建进程
Dreadnought 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lqjunf 的回复:]

引用 1 楼 huangcheng90 的回复:

CreateProcessAsUser 或者ShellExecuteEx lpVerb = _T("run as");..


你第二个函数是提升权限运行的,和降低没啥关系。第一个函数我知道。但是你知道怎么用吗?在进程中没有成功
[/Quote]
你以标准用户创建进程无非就是为了限制进程的某些权限,你用JobObject限制不就可以了...
LiuQijun 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huangcheng90 的回复:]

CreateProcessAsUser 或者ShellExecuteEx lpVerb = _T("run as");..
[/Quote]

你第二个函数是提升权限运行的,和降低没啥关系。第一个函数我知道。但是你知道怎么用吗?在进程中没有成功
Dreadnought 2011-04-15
  • 打赏
  • 举报
回复
CreateProcessAsUser 或者ShellExecuteEx lpVerb = _T("run as");..
管理员权限功能开发的整体梳理 创建项目 创建视图层,views层和model层 创建管理员登录模块,提交数据以及数据的验证一系列的功能 创建后端的菜单模块:增删改查的功能 菜单模块的添加视图层以及数据的传递以及保存数据到数据库的整个流程 把数据读取出来渲染到视图层的整个流程 介绍hui-admin UI框架的使用以及布局添加菜单模块的视图层    创建角色权限模块的视图层创建以及数据层的对接     前端js对角色授权按钮的处理     前端js对对每一个角色的复选框的数据绑定以及选中功能     通过多表连接读取数据库中后端分类的数据以及数据进行处理     传递菜单分类数据到视图层,书写js方法进行数据渲染功能     如何把选中的菜单项传递到后端进行数据处理     后端如何接收到前端传递来的菜单分类数据如何再写入到数据库中     Django框架的models如何批量插入数据到数据库中    添加管理员模块以及指定当前管理员的角色    按照不同的管理员进行登录显示不同的角色所管理的菜单分类数据     多表操作管理员表角色表菜单表获取当前管理员管理的菜单项     得到对应的菜单项数据传递到前端进行渲染 本课程以实际案例开发为主,通过案例来巩固基础知识。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧