Lamento decírtelo, pero has incumplido tu propia condición. El programa no estaba bloqueado porque como tu mismo dijiste, no funciona si se ejecuta dentro del IDE ya que se ejecuta sin privilegios de administrador.
Voy ha hacer una retruscturación del código:
Ahora en caso de que no se pueda bloquear (ya sea porque otro proceso lo esté usando o por falta de permisos) devolverá un mensaje de error.
Voy ha hacer una retruscturación del código:
Código (cpp) [Seleccionar]
/* nota para que funcione correctamente se debe ejecutar desde fuera de un ide */
#include <windows.h>
#include <stdio.h>
int main()
{
// Abro el archivo, no permito otros accesos de lectura/escritura/borrado
HANDLE Lectura = CreateFileA("programa.exe", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if (Lectura == INVALID_HANDLE_VALUE)
{
printf("No se pudo bloquear el programa");
return 1;
}
Sleep(30000); // Duemo 30 segundos
return 0;
}
Ahora en caso de que no se pueda bloquear (ya sea porque otro proceso lo esté usando o por falta de permisos) devolverá un mensaje de error.