- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Windows 服务(在 WinXP SP2 下),在 LocalSystem 帐户下运行,它使用 CreateProcessWithLogonW 启动进程。为了清理子进程,我尝试使用作业对象和 TerminateJobObject。
MSDN 声明作业句柄必须具有 JOB_OBJECT_ASSIGN_PROCESS 访问权限,因为它是通过 CreateJobObject 创建的。进程句柄必须具有 PROCESS_SET_QUOTA 和 PROCESS_TERMINATE 权限。我认为它有它们,因为 TerminateProcess 和 SetProcessWorkingSetSize 都没有错误地返回。
但是,AssignProcessToJobObject 失败并显示错误号 5(访问被拒绝)。如果我将 CreateProcessWithLogonW 替换为简单的 CreateProcess,则一切正常。
我是不是遗漏了什么或者我想做的事情是不可能的?
编辑:似乎在使用 CreateProcessWithLogonW 时实际创建进程的 svchost.exe 似乎已经将进程分配给匿名作业。此函数忽略 CREATE_CREAKAWAY_FROM_JOB 标志。所以真正的问题是:有没有办法阻止 svnhost 将进程分配给作业?
最佳答案
来自 Jeff Lawson在 MSDN 上:
Interactions with Win32 Job Objects
CreateProcessWithLogonW executes thenew process as a child of theSecondary Logon service, which has theoutcome of making the process escapeany Job Object membership/restrictionseven if the Job Object did not allowbreakaway.
Furthermore, the SecondaryLogon service automatically createsits own new Job Object and assigns thenew process into it. As such, it isnot possible for the caller toexplicitly assign the new process toany other Job Object (since a processmay only be assigned to one JobObject, and can never be removed froma Job Object once it has been assignedto one).
是否每个新进程都需要不同的登录?否则,您可以使用新登录创建一个进程,并使用 CreateProcess 生成新进程,然后将其与作业对象相关联。
关于CreateProcessWithLogonW 和 AssignProcessToJobObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287620/
我需要从 Windows 服务运行命令行应用程序,以另一个 Windows 用户身份执行它(通过提供域\用户 和密码)。 我以这种方式将 Windows API CreateProcessWithLo
我正在尝试启动一个程序,该程序以另一个用户的身份在 Windows 7 系统上使用 Win32 函数 CreateProcessWithLogon 启动另一个程序,但它返回错误 120,表示不支持的函
我有一个 Windows 服务(在 WinXP SP2 下),在 LocalSystem 帐户下运行,它使用 CreateProcessWithLogonW 启动进程。为了清理子进程,我尝试使用作业对
我正在使用来自 http://www.pinvoke.net/default.aspx/advapi32.createprocesswithlogonw 的代码.如何从标准输出中获取字符串形式的输出?
我有一段代码 if(!CreateProcessWithLogonW( szUserName, NULL, szPassword, LOGON_WITH_PROFILE
在测试框架中,进程 A 必须使用 CreateProcessWithLogonW API 在不同的用户凭据(例如,_limited_user)下启动进程 B。 lpStartupInfo->lpDes
我有一个 Windows 可执行文件,它是通过使用一组指定的用户详细信息调用 CreateProcessWithLogonW() 从服务中启动的。 这工作正常,并且该过程按预期开始。但是,当此进程尝试
大家好,我是编程新手。请有人帮助我。 我正在尝试从服务启动进程。我需要通过提示用户输入管理员凭据来启动新流程。 我正在尝试使用 CreateProcessWithLogonW()。 我使用的功能是否正
我写了一个程序,它应该像 RunAs 一样工作。它工作正常,但我有一个问题。如果我想运行例如 compmgmt.msc,那么我应该运行 mmc.exe 和 compmgmt.msc 作为它的参数。计算
我写了一个小函数,可以加载一个的多个实例使用 CreateProcessWithLogonW 可执行 伪代码: for ( i=0;i<100;i++) { sprintf(user,"user%
当我使用 CreateProcess() 创建一个进程时,我可以毫无问题地从它的 stdOut 中读取。为此,我创建了管道并通过 STARTUPINFO 将它们传递给进程。稍后我可以使用 ReadFi
所以我一直在开发一个小应用程序,它在某些时候以另一个用户的身份运行一个应用程序,我用 C 编写它并使用 MinGW GCC 编译器来编译和链接它。我的问题是,每当我尝试使用 WINAPI 函数 Cre
我正在使用以下代码创建具有其他用户安全权限的进程: CreateProcessWithLogonW( Username, Domain ? Domain : L".", Pas
我是一名优秀的程序员,十分优秀!