很多博客都有记载如何在session0下创建进程的办法,也就是使用CreateProcessAsUser。但是这个要求服务的进程有SE_INCREASE_QUOTA_NAME和SE_ASSIGNPRIMARYTOKEN_NAME权限如果设置的登录用户是LocalServer的话,是默认有以上两个权限。但是如果是自己创建的账户,那么是不具有SE_ASSIGNPRIMARYTOKEN_NAME的权限。

查看用户的权限可以通过gpedit.msc工具中,在“计算机配置”-- “Windows设置” -- “安全设置” -- “本地策略” -- “用户权限分配”中查看。或者通过secedit.exe导出本地策略。

手动可以通过以上的方法设置,但是通过程序,在登录账户下的进程是无法设置。但是可以使用secedit.exe进行导出导入进行设置。导出的信息包括以下一部分:

  1 [Privilege Rights]
2 SeNetworkLogonRight = *S-1-1-0,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551,*S-1-5-32-581
3 SeBackupPrivilege = *S-1-5-32-544,*S-1-5-32-551
4 SeChangeNotifyPrivilege = *S-1-1-0,*S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551
5 SeSystemtimePrivilege = *S-1-5-19,*S-1-5-32-544
6 SeCreatePagefilePrivilege = *S-1-5-32-544
7 SeDebugPrivilege = *S-1-5-32-544
8 SeRemoteShutdownPrivilege = *S-1-5-32-544
9 SeAuditPrivilege = *S-1-5-19,*S-1-5-20
10 SeIncreaseQuotaPrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544
11 SeIncreaseBasePriorityPrivilege = *S-1-5-32-544
12 SeLoadDriverPrivilege = *S-1-5-32-544
13 SeBatchLogonRight = *S-1-5-32-544,*S-1-5-32-551,*S-1-5-32-559
14 SeServiceLogonRight = *S-1-5-20,*S-1-5-80-0,*S-1-5-83-0
15 SeInteractiveLogonRight = __vmware__,Guest,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551,*S-1-5-32-581
16 SeSecurityPrivilege = *S-1-5-32-544
17 SeSystemEnvironmentPrivilege = *S-1-5-32-544
18 SeProfileSingleProcessPrivilege = *S-1-5-32-544
19 SeSystemProfilePrivilege = *S-1-5-32-544,*S-1-5-80-3139157870-2983391045-3678747466-658725712-1809340420
20 SeAssignPrimaryTokenPrivilege = *S-1-5-19,*S-1-5-20
21 SeRestorePrivilege = *S-1-5-32-544,*S-1-5-32-551
22 SeShutdownPrivilege = *S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551
23 SeTakeOwnershipPrivilege = *S-1-5-32-544
24 SeDenyNetworkLogonRight = Guest
25 SeDenyInteractiveLogonRight = Guest
26 SeUndockPrivilege = *S-1-5-32-544,*S-1-5-32-545
27 SeManageVolumePrivilege = *S-1-5-32-544
28 SeRemoteInteractiveLogonRight = *S-1-5-32-544,*S-1-5-32-555
29 SeImpersonatePrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-6
30 SeCreateGlobalPrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-6
31 SeIncreaseWorkingSetPrivilege = *S-1-5-32-545
32 SeTimeZonePrivilege = *S-1-5-19,*S-1-5-32-544,*S-1-5-32-545
33 SeCreateSymbolicLinkPrivilege = *S-1-5-32-544,*S-1-5-83-0
34

使用账户的SID,更新到SeAssignPrimaryTokenPrivilege字段,该用户即可拥有了SE_ASSIGNPRIMARYTOKEN_NAME权限。获取SID可以通过LookupAccountName函数完整的用户的SID可通过注册表查看,路径为:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

整个过程总结一下:

第一步:使用LookupAccountName,通过服务登录账户名,获取该账户的SID;

第二步:secedit.exe导出本地策略,将第一步获取的SID更新到SeAssignPrimaryTokenPrivilege字段;

例如:secedit /export /cfg gp.inf

第三步:使用secedit.exe,将新的配置文件导入到系统;

例如:secedit /configure /db C:\\test.sdb /cfg gp.inf

第四步:重启计算机;

第五步:在服务进程中,使用CreateProcessAsUser进行子进程的创建。

示例代码地址:代码GetSIDByUserName.cpp和CreateProcessAsUser.cpp

Windows平台下的session0创建进程的问题与解决办法的更多相关文章

  1. mysql免安装版1067错误终极解决办法|在windows平台下MySql启动时的1067错误的解决方法及反思

    [windows事件查看] 我的电脑--此电脑--右键管理--计算机管理--系统工具--事件查看器--Windows日志--应用程序--找错误标志,如下图 [提示] 按部就班,可能并不能解决你的问题, ...

  2. windows平台下cocos2d-x-3.0beta2创建新项目

    我目前使用的版本是cocos2d-x-3.0beta2 前提: 已安装了python2.7.3 已安装了VS2012 打开我的cocos2d-x-3.0beta2所在文件夹F:\Framework\c ...

  3. 利用zabbix监控ogg进程(Windows平台下)

    本文给大家介绍如何监控windows平台下的ogg程序.(注:所有操作都在administrator用户下面进行操作) 监控linux平台下的ogg程序请看:https://www.cnblogs.c ...

  4. 在Windows平台下Qt的exe报错问题排查步骤

    在Windows平台下Qt的exe报错问题排查步骤 工具介绍: 1. Dependency Worker Dependency Worker是一个免费的用具用来扫描任何的32bit 或者64bit 的 ...

  5. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  6. Windows平台下Git服务器搭建

    第一步:下载Java,下载地址:http://www.java.com/zh_CN/ 第二步:安装Java.安装步骤不再详述. 第三步:配置Java环境变量. 右键”计算机” => ”属性” = ...

  7. Windows 平台下Git 服务器搭建

    由于项目中一直在使用git作为版本管理,自己对git的理解.使用都还不是怎么的熟悉,所以准备深入了解一下git及一些常用命令的使用,于是干脆把服务端架上,通过自己的PC作为服务端同时作为客户端的角色进 ...

  8. 【转】Windows平台下Git服务器搭建

    Windows平台下Git服务器搭建 Posted on 2015-05-18 21:29 阿祥当码农 阅读(7637) 评论(0) 编辑 收藏 该文章转自:http://www.codeceo.co ...

  9. Windows平台下的node.js安装

    Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应 ...

随机推荐

  1. 使用git的正确姿势

    1.Windows上安装git:从https://git-for-windows.github.io下载msysgit. 2.linux(Debian或Ubuntu)安装git:sudo apt-ge ...

  2. HACMP 学习笔记--转载自wangjialiang-csdn博客

    An41 教程: Ha: 初始阶段的规划最重要 第一部分:概念和模型 Ha 目标:掩盖和消除计划和非计划的宕机 Eliminate SPOF :消除单节点故障, single point of fai ...

  3. link方式安装Eclispe插件:greenUML

    用Link方式安装Eclipse插件有几点好处: (1)把自己的插件和Eclipse自带的插件分离 (2)可以通过修改link文件来决定是否加载该插件 (3)重新安装Eclipse的时候,直接拷贝自己 ...

  4. Cookie和Seesion的区别

    一.Cookie对象: 1.Cookie是由网络服务器发送出来,存在在浏览器上,它是个存储在浏览器目录中的文本文件.当浏览该cookie对应的站点时,cookie作为http头部文件的一部分在浏览器和 ...

  5. C#反编译工具 ILSPY-x64可动态调试-君临汉化版

    程序基于著名的ILSpy version 2.1.0.1603 汉化,并增加x64下debugging功能;初衷是网上只有一版是原作者留下的x86版本,实在不想在虚拟机里调试,只有自己动手弄一份x64 ...

  6. php curl基本操作

    如何使用cURL的基本方法?首先,修改php.ini文件的设置,找到php_curl.dll,取消下在的注释extension=php_curl.dll,因为php默认是不开启cURL的. cURL是 ...

  7. Django的templates模版

    前面介绍的都是django.http.HttpResponse 把内容直接返回到网页上,这次介绍通过渲染模版的方法来显示内容 步骤: 1.创建一个项目(略) 2.创建一个app(略) 3.添加项目到s ...

  8. Java创建Oracle数据库表

    我们通常只用java执行DML(即:insert, update, delete, select)操作,很少用来执行DDL(create, drop, alert)操作.今天试了下如何用java来创建 ...

  9. 在Qt Creator中添加OpenCV库

    在项目的pro文件中添加如下代码:INCLUDEPATH += D:/opencv/build/include win32:CONFIG(debug, debug|release): {LIBS += ...

  10. 百度地图 获取矩形point

    http://developer.baidu.com/map/jsdemo.htm#f0_7  鼠标绘制点线面 <!DOCTYPE html><html><head> ...