elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [m][SRC][Semaforos!] Alternativa a CreateMutex
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [m][SRC][Semaforos!] Alternativa a CreateMutex  (Leído 7,162 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
[m][SRC][Semaforos!] Alternativa a CreateMutex
« en: 16 Marzo 2010, 15:58 pm »

Ya puse una alternativa hace un tiempo:
Código:
http://foro.elhacker.net/programacion_vb/srcmaltmutexbas_alternativa_a_createmutex-t243771.0.html

Pues aqui va otra trabajando con Semaforos :P
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Function CreateSemaphoreW Lib "kernel32.dll" (ByVal lpSemaphoreAttributes As Long, ByVal lInitialCount As Long, ByVal lMaximumCount As Long, ByVal lpName As Long) As Long
  4.  
  5. Private Const ERROR_ALREADY_EXISTS  As Long = 183&
  6.  
  7. Public Function bWasIOpened(ByVal lpName As String) As Boolean
  8.    bWasIOpened = (CreateSemaphoreW(0&, 0&, 1&, StrPtr(lpName)) > 0) And (Err.LastDllError = ERROR_ALREADY_EXISTS)
  9. End Function
Minimalista, como a mi me gusta >:D

Bueno, para que no sepa para que sirve esto lo explico, es bastante facil. Sirve para que no hayan dos instancias de nuestra aplicacion ejecutandose simultaneamente...
Una mejor explicacion de nuestro amigo MadAntrax :P
sirve para controlar que nuestra aplicación no sea ejecutada 2 veces en un mismo equipo. Algunos pensareis que eso ya se puede hacer con

Código
  1. If App.PrevInstance = True Then End

pero eso no es cierto... si nuestra aplicación se copia en System32 como: programa1.exe y programa2.exe... el usuario podrá ejecutar el programa1.exe y el programa2.exe simultáneamente! Eso puede suponer un problema en el caso de estar programando un troyano o un keylogger (donde lo importante es solo tener una instancia de nuestro malware a la vez).

Ejemplo de uso del code:
Código
  1. Private Sub Form_Load()
  2.    If bWasIOpened("Cualquier_Cosa") = True Then End
  3. End Sub

Nota:Probar solo compilado.

Saludos :D


« Última modificación: 31 Marzo 2010, 16:18 pm por Karcrack » En línea

Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #1 en: 16 Marzo 2010, 16:22 pm »

If App.PrevInstance = True Or App.EXEName <> "Project1" Then End

 :silbar:


En línea

Sergio Desanti
ssccaann43 ©


Desconectado Desconectado

Mensajes: 792


¬¬


Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #2 en: 16 Marzo 2010, 16:24 pm »

Jajaja XD...

Karcrack como dice cobein... Sos un capo...! Me gustó este code...! ::D
En línea

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #3 en: 16 Marzo 2010, 16:24 pm »

If App.PrevInstance = True Or App.EXEName <> "Project1" Then End

 :silbar:

Creo que no has leido la cita que he hecho a MadAntrax...
Si se renombra el fichero y se vuelve a ejecutar el proceso eso no sirve para nada :)

Jajaja XD...

Karcrack como dice cobein... Sos un capo...! Me gustó este code...! ::D
Gracias :-[ :xD :xD
En línea

Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #4 en: 16 Marzo 2010, 16:33 pm »

Jajaja XD...

Karcrack como dice cobein... Sos un capo...! Me gustó este code...! ::D

+1 , tambien me gustó el code

Si se renombra el fichero y se vuelve a ejecutar el proceso eso no sirve para nada :)

Como que no sirve, si renombras (en la misma carpeta o ya está corriendo  no hay segunda instancia
PD: y app.path en el caso que se renombre en otra carpeta

En línea

Sergio Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #5 en: 16 Marzo 2010, 16:38 pm »

Como que no sirve, si renombras (en la misma carpeta o ya está corriendo  no hay segunda instancia
PD: y app.path en el caso que se renombre en otra carpeta
1- No es buena idea 'hardcodear' un nombre (de carpeta o fichero, da igual), ya que eso es facilmente modificable...
2- Prueba a usar el metodo de app.PrevInstance haciendo esto:
Compila el ejecutable como "Proyecto1.exe" ejecutalo, ira sin problemas... copia el "Proyecto1.exe" a "Proyecto2.exe" y abrelo... veras que hay dos instancias de la misma aplicacion...
En línea

Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #6 en: 16 Marzo 2010, 16:45 pm »

Como que no sirve, si renombras (en la misma carpeta o ya está corriendo  no hay segunda instancia
PD: y app.path en el caso que se renombre en otra carpeta
1- No es buena idea 'hardcodear' un nombre (de carpeta o fichero, da igual), ya que eso es facilmente modificable...
2- Prueba a usar el metodo de app.PrevInstance haciendo esto:
Compila el ejecutable como "Proyecto1.exe" ejecutalo, ira sin problemas... copia el "Proyecto1.exe" a "Proyecto2.exe" y abrelo... veras que hay dos instancias de la misma aplicacion...


If App.PrevInstance = True Or App.EXEName <> "Proyecto1" Then End

como va a abrir Proyecto2 si no es = a Proyecto1



En línea

Sergio Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #7 en: 16 Marzo 2010, 16:47 pm »

If App.PrevInstance = True Or App.EXEName <> "Proyecto1" Then End

como va a abrir Proyecto2 si no es = a Proyecto1
Si, si, mientras uses esa condicion al cambiar el nombre se cerrará... pero te digo que no es buena idea, porque si cambias el nombre al EXE original... es decir, cambias el nombre al "Proyecto1" por incluso "PROYECTO1" dejara de ir.... Por eso no es buena idea :xD O si lo pusieses en un AutoExtraible del WinRar tampoco iria, porque a no ser que digas lo contrario el Winrar pone nombres aleatorios :D
En línea

Sm0kes

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #8 en: 16 Marzo 2010, 17:49 pm »

hey genial Karcrack lo tomare como alternativa vere que otros metodos habra me has motivado xD... Salu2 y thankz ;)
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: [m][SRC][Semaforos!] Alternativa a CreateMutex
« Respuesta #9 en: 16 Marzo 2010, 18:34 pm »

Muy bueno Karcrack =D

@Hasseds, todo eso que pusiste se puede "saltar" por ejemplo copiando la app a otra unidad, mismo nombre etc y va a correr. Digamos que los semaforos o mutex son alternativas mas "globales"
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SRC][mAltMutex.bas] Alternativa a CreateMutex
Programación Visual Basic
Karcrack 5 5,269 Último mensaje 8 Febrero 2009, 22:27 pm
por seba123neo
Semáforos en C
Programación C/C++
masterson 3 11,686 Último mensaje 19 Junio 2011, 06:15 am
por CorruptedByte
Consulta semáforos y señales
Programación C/C++
NewBe 2 3,393 Último mensaje 29 Diciembre 2011, 03:57 am
por dooque
Semaforos en c
Programación C/C++
prosebas 5 6,134 Último mensaje 25 Junio 2021, 19:26 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines