【工作中学习】CreateProcessAsUser失败,错误码:1314

  事情起因是这样,

  产品的Windows服务(Service)之前一直是用Local System Account在运行的,但这个版本有需求要换成使用普通的Domain User来运行,如下图:

  但却出现了问题,之前产品代码中会调用windows API - CreateProcessAsUser,来以另一个账号的身份启动另一个进程,另一个账号是通过UI单独提供的。

  之前会成功,但现在却失败,无法启动新进程。

  错误码(Error Code)是1314,通过查询文档,这个Error Code的意思是:ERROR_PRIVILEGE_NOT_HELD,缺少权限。

  通过查询CreateProcessAsUser微软的官方文档可知,执行此API需要两个权限方可成功,如下:

  1. SE_INCREASE_QUOTA_NAME

  2. SE_ASSIGNPRIMARYTOKEN_NAME

  并且通过查询另一个文档,可知问题的根本原因是:Local System Account默认具有这两个权限,而我们替换用的Domain Account却不具有此权限。

  因此必须要给Domain Account来增加权限,方法是:在windows的Local Security Settings中找到User Rights Management,给相关用户增加权限。如下图:

  其中SE_INCREASE_QUOTA_NAME对应的权限是Adjust memory quotas for a process,SE_ASSIGNPRIMARYTOKEN_NAME对应的权限是Replace a process-level token。

  增加权限后,再执行,可成功,问题解决。

参考资料:

  1. CreateProcessAsUser function

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682429(v=vs.85).aspx

  2. Privilege Constants

https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx

  3. LocalSystem Account

https://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v=vs.85).aspx

  Thanks.

                                        - Kevin Song

                                        2016年1月5日

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Docker网络解决方案-Flannel部署记录

Docker跨主机容器间网络通信实现的工具有Pipework、Flannel、Weave、Open vSwitch(虚拟交换机)、Calico实现跨主机容器间的...

4958
来自专栏乐沙弥的世界

使用nid命令修改 db name 及 dbid

    工作中不可避免地碰到需要修改dbname以及dbid的情形,如将数据库恢复到同一台机器的情形是其中之一。但dbname以及dbid是用于标识数据库的重要...

662
来自专栏数据和云

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

? 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB...

2775
来自专栏高爽的专栏

IE下用JavaScript将HTML导出为Word、Pdf

       最近升级公司内部系统发文章的功能,涉及到将文章内容导出为html、word、pdf,系统多用于IE环境下,并且公司电脑都预装了office,所以导...

2210
来自专栏Python爬虫与算法进阶

Spark教程(二)Spark连接MongoDB

数据可能有各种格式,虽然常见的是HDFS,但是因为在Python爬虫中数据库用的比较多的是MongoDB,所以这里会重点说说如何用spark导入MongoDB中...

1882
来自专栏云计算教程系列

如何使用CentOS 7上的TICK堆栈监控系统指标

TICK堆栈是来自时间序列数据库InfluxDB的开发人员的产品集合。它由以下组件组成:

1505
来自专栏Porschev[钟慰]的专栏

Windows Server 2008R2配置MySQL Cluster

配置环境   VMware:(版本10.0.01)   操作系统:Windows Server 2008 R2 Enterprise   VM1:192.168...

23210
来自专栏菩提树下的杨过

IBM WebSphere MQ 7.5基本用法

一、下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必...

3058
来自专栏坚毅的PHP

ImageMagick and JMagick install on Mac OSX

接的遗留代码,在本地运行,有jmagick-6.4.0.jar 但是出现错误: javax.servlet.ServletException: java.lan...

3726
来自专栏Linux运维学习之路

Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用

K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN...

1.1K5

扫码关注云+社区