API OpenProcess « Devthisblog

Devthisblog Desarrollo .net, Diseño Web, Seguridad… Y todo lo que se me vaya ocurriendo…

junio 16, 2013

API OpenProcess

Filed under: .net,API,ASP.Net,Curso C# — Etiquetas: , , , — jnavero @ 7:00 pm

Tengo pensado un post desde hace tiempo, pero, primero debo hacer varios explicando diferentes tipos de APIS que se utilizarán para dicho post.
En esta ocasión hablaré de OpenProcess.

API OpenProcess:
Esta api retorna el manejador (handle) de un proceso existente en el sistema.

Tipo de Función: Procesos e Hilos

 C# | 
 
 copy code |
?

1
2
HANDLE WINAPI OpenProcess(
3
  _In_  DWORD dwDesiredAccess,
4
  _In_  BOOL bInheritHandle,
5
  _In_  DWORD dwProcessId
6
);
7

Parametros:
dwDesiredAccess: Indica el permiso de acceso del proceso, se compara con el descriptor de seguridad del proceso. Este parámetro puede tener uno o mas valores. Estos valores los podemos ver aquí.

bInheritHandle:Indica Si es true, el manejador devuelto podrá heredarse.

dwProcessId:Indica el identificador del proceso a abrir.

Retorna Si la función tiene éxito retorna el manejador del proceso especificado. Si no retorna null.

Ejemplo: En este ejemplo abro el primer proceso en modo lectura/escritura y podemos comprobar que retorna el handle del proceso. En otros post mostraré esto con mucha mas profundidad.

 C# | 
 
 copy code |
?

01
02
using System.Diagnostics;
03
using System.Runtime.InteropServices;
04
 
05
namespace Pruebas
06
{
07
    public partial class Form1 : Form
08
    {
09
        [DllImport("kernel32.dll", SetLastError = true)]
10
        public static extern IntPtr OpenProcess(
11
            UInt32 dwDesiredAccess,
12
            Int32 bInheritHandle,
13
            UInt32 dwProcessId); 
14
 
15
        public Form1()
16
        {
17
            InitializeComponent();
18
        }
19
 
20
        private void button1_Click(object sender, EventArgs e)
21
        {
22
            int PIDProceso = 0;
23
            //Cojo el primer proceso de la lista (por ejemplo).
24
            PIDProceso = Process.GetProcesses()[0].Id;
25
 
26
            IntPtr hndProc = OpenProcess((0x10 | 0x20 ),  //Abro el proceso en modo lectura y escritura
27
                1,
28
                (uint)PIDProceso); //Le paso el pid del proceso.
29
        }
30
    }
31
}
32

Este ejemplo lo pongo en C# de esta forma nos habituamos a los dos lenguajes (tanto C# como VB.NET).

No hay comentarios »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress