hice un codigo para buscar datos en la memoria de un proceso, uso el OpenProcess y la constante PROCESS_ALL_ACCESS, lo he ejecutado con varios procesos y anda bien, ahora quise probarlo con el juego StarCraft, al ejecutar este juego me fijo en el taskmgr en la columna donde dice si es un proceso "SYSTEM" o "serivcio de red" o "usuario" dice que es proceso "usuario" pero no puedo abrir el proceso.
Puede que te falte establecer privilegios de depuracion a tu aplicacion.
Creo que con esto tendras:
http://foro.elhacker.net/programacion_visual_basic/source_conseguir_privilegios_adjusttokenprivileges-t199668.0.html;msg948415
saludos
graxias, copie el codigo del post en un modulo .bas y llamo a esa funcion de esta manera:
Private Sub Form_Load()
ObtenerPrivilegios SE_DEBUG_NAME
End Sub
pero no puede abrir el proceso ¿algo hice mal?, mi SO es windows 7 ¿sera este el problema?,el taskmgr si puede cerrar el proceso con facilidad , estuve revisando algo acerca del comando schtasks y tambien estoy que busco lo del AdjustTokenPrivileges.
mi cuenta de usuario es la unica y principal.
Cita de: alxspy en 16 Junio 2011, 01:34 AM
graxias, copie el codigo del post en un modulo .bas y llamo a esa funcion de esta manera:
Private Sub Form_Load()
ObtenerPrivilegios SE_DEBUG_NAME
End Sub
pero no puede abrir el proceso ¿algo hice mal?, mi SO es windows 7 ¿sera este el problema?,el taskmgr si puede cerrar el proceso con facilidad , estuve revisando algo acerca del comando schtasks y tambien estoy que busco lo del AdjustTokenPrivileges.
mi cuenta de usuario es la unica y principal.
Pues no se en realidad que estaras haciendo, pero con el codigo que te puse anteriormente a mi me va de maravillas. Te pongo un codigo de ejemplo con el que consigo abrir un proceso SYSTEM ;D
Copia el codigo anterior en un modulo, inserta dos botones en el formulario y luego copia este codigo:
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Sub Command1_Click()
ObtenerPrivilegios SE_DEBUG_NAME
End Sub
Private Sub Command2_Click()
Dim hOpen As Long
hOpen = OpenProcess(PROCESS_ALL_ACCESS, 0&, 800) ' // Abrimos el proceso por su PID
' // Cambia el "800" por el PID del proc que quieras
If hOpen = 0 Then
MsgBox "No abrio el proceso", vbCritical, "Error", 0, 0
Else
MsgBox "Se abrio el proceso", vbInformation, "Correcto", 0, 0
End If
CloseHandle (hOpen)
End Sub
Veras que si le das al boton2 antes que al boton1 te dara error, pues no tienes los privilegios activados, una vez los ajustes, te saldra el cartel de correcto.
saludos
gracias.