Compartir a través de


Función OpenProcess (processthreadsapi.h)

Abre un objeto de proceso local existente.

Sintaxis

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

Parámetros

[in] dwDesiredAccess

Acceso al objeto process. Este derecho de acceso se comprueba con el descriptor de seguridad del proceso. Este parámetro puede ser uno o varios de los derechos de acceso al proceso.

Si el autor de la llamada ha habilitado el privilegio SeDebugPrivilege, se concede el acceso solicitado independientemente del contenido del descriptor de seguridad.

[in] bInheritHandle

Si este valor es TRUE, los procesos creados por este proceso heredarán el identificador. De lo contrario, los procesos no heredan este identificador.

[in] dwProcessId

Identificador del proceso local que se va a abrir.

Si el proceso especificado es el proceso inactivo del sistema (0x00000000), se produce un error en la función y el último código de error es ERROR_INVALID_PARAMETER. Si el proceso especificado es el proceso del sistema o uno de los procesos del Subsistema de Run-Time cliente (CSRSS), esta función produce un error y el último código de error se debe ERROR_ACCESS_DENIED a que sus restricciones de acceso impiden que el código de nivel de usuario los abra.

Si usa GetCurrentProcessId como argumento para esta función, considere la posibilidad de usar GetCurrentProcess en lugar de OpenProcess para mejorar el rendimiento.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador abierto para el proceso especificado.

Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Para abrir un identificador en otro proceso local y obtener derechos de acceso completo, debe habilitar el privilegio SeDebugPrivilege. Para obtener más información, consulte Cambio de privilegios en un token.

El identificador devuelto por la función OpenProcess se puede usar en cualquier función que requiera un identificador para un proceso, como las funciones de espera, siempre que se solicitaron los derechos de acceso adecuados.

Cuando haya terminado con el identificador, asegúrese de cerrarlo mediante la función CloseHandle .

Ejemplos

Para obtener un ejemplo, vea Tomar una instantánea y ver procesos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado processthreadsapi.h (incluya Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

Funciones de proceso y subproceso

Procesos

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory