C++ 如何在CreateProcess()中使用SECURITY_属性?

C++ 如何在CreateProcess()中使用SECURITY_属性?,c++,visual-c++,winapi,C++,Visual C++,Winapi,你好 当我尝试在以CreateProcess()启动的线程上使用GetThreadContext()时,我收到一个错误998:error\u NOACCESS 您可以在此处找到此问题的人为代码示例: 基于MSDN关于“线程安全性和访问权限”的文章,我的假设是我需要首先将Thread_GET_上下文属性传递到CreateProcess()的lpThreadAttributes参数中。此参数所需的类型是LPSECURITY\u ATTRIBUTES,它似乎是指向struct SECURITY\u属性

你好

当我尝试在以CreateProcess()启动的线程上使用GetThreadContext()时,我收到一个错误
998:error\u NOACCESS

您可以在此处找到此问题的人为代码示例:

基于MSDN关于“线程安全性和访问权限”的文章,我的假设是我需要首先将Thread_GET_上下文属性传递到CreateProcess()的
lpThreadAttributes
参数中。此参数所需的类型是
LPSECURITY\u ATTRIBUTES
,它似乎是指向struct SECURITY\u属性的长指针。不幸的是,我没有太多的运气弄明白如何向这个结构添加权限


有人能帮我指出正确的方向吗?

我想您可能需要调整调用代码的权限,以便可以访问远程进程。我怀疑您需要在尝试获取远程线程上下文之前启用
SE_DEBUG_NAME
权限(请参阅)。但是我不确定,因为我通常使用调试API并使用
debug\u进程调用
CreateProcess()
,这需要
SE\u debug\u NAME


如果确实需要创建安全描述符,那么您要做的就是创建一个DACL(自主访问控制列表),它是一个
security\u ATTRIBUTES
结构,由ACL(访问控制列表)填充,ACL允许或拒绝不同主体(用户、计算机等)对资源的访问。这过去非常复杂,需要进行许多复杂的API调用,但现在更容易了,请参阅以了解详细信息。

谢谢您的回复,Len。关于如何将线程获取上下文编码为安全描述符字符串格式,您有什么指导吗?请先尝试使用
DEBUG\u process
启动该过程。我想这可能就是你所需要做的。您将为正在创建的进程创建的安全描述符是告诉它可以做什么,而不是告诉它您可以对它做什么。