Condividi tramite


Funzione OpenProcess (processthreadsapi.h)

Apre un oggetto processo locale esistente.

Sintassi

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

Parametri

[in] dwDesiredAccess

Accesso all'oggetto processo. Questo diritto di accesso viene controllato rispetto al descrittore di sicurezza per il processo. Questo parametro può essere uno o più dei diritti di accesso del processo.

Se il chiamante ha abilitato il privilegio SeDebugPrivilege, l'accesso richiesto viene concesso indipendentemente dal contenuto del descrittore di sicurezza.

[in] bInheritHandle

Se questo valore è TRUE, i processi creati da questo processo erediteranno l'handle. In caso contrario, i processi non ereditano questo handle.

[in] dwProcessId

Identificatore del processo locale da aprire.

Se il processo specificato è il processo di inattività del sistema (0x00000000), la funzione ha esito negativo e l'ultimo codice di errore è ERROR_INVALID_PARAMETER. Se il processo specificato è il processo di sistema o uno dei processi client server Run-Time Subsystem (CSRSS), questa funzione ha esito negativo e l'ultimo codice di errore è ERROR_ACCESS_DENIED dovuto al fatto che le restrizioni di accesso impediscono l'apertura del codice a livello di utente.

Se si usa GetCurrentProcessId come argomento per questa funzione, è consigliabile usare GetCurrentProcess anziché OpenProcess per migliorare le prestazioni.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un handle aperto per il processo specificato.

Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Per aprire un handle a un altro processo locale e ottenere diritti di accesso completi, è necessario abilitare il privilegio SeDebugPrivilege. Per altre informazioni, vedere Modifica dei privilegi in un token.

L'handle restituito dalla funzione OpenProcess può essere usato in qualsiasi funzione che richiede un handle per un processo, ad esempio le funzioni di attesa, purché siano stati richiesti i diritti di accesso appropriati.

Al termine dell'handle, assicurarsi di chiuderlo usando la funzione CloseHandle .

Esempio

Per un esempio, vedere Acquisizione di uno snapshot e visualizzazione di processi.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione processthreadsapi.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

AssignProcessToJobObject

Closehandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

Funzioni di processi e thread

Processi

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory