Bonjour à tous !
Voilà mon soucis. J'utilise Inno Setup pour installer mon application et j'aurais souhaiter utiliser un mutex pour demander de fermer l'application lors d'une mise à jour par exemple. J'ai pour le moment tenté 2 méthodes qui ne sont pas concluantes.
J'utilise Process Explorer pour visualiser la liste des mutex.
=> Ne fait RIEN, je ne vois aucun mutex créé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Declare Function CreateMutex Lib "kernel32" _ Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long ' dans la fenêtre principal CreateMutex(0&, 0&, "monAppliMutex")
=> Un mutex est effectivement créé mais pour seulement quelques secondes avec une sécurité où tout est refusé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Dim m As Threading.Mutex = Nothing Const mutexName As String = "monAppliMutex" Dim mutexWasCreated As Boolean ' Dim user As String = Environment.UserDomainName _ & "\" & Environment.UserName Dim mSec As New MutexSecurity() Dim rule As New MutexAccessRule(user, _ MutexRights.Synchronize Or MutexRights.Modify, _ AccessControlType.Deny) mSec.AddAccessRule(rule) rule = New MutexAccessRule(user, _ MutexRights.ReadPermissions Or _ MutexRights.ChangePermissions, _ AccessControlType.Allow) mSec.AddAccessRule(rule) m = New Mutex(True, mutexName, mutexWasCreated, mSec)
Donc ma question : est-ce que quelqu'un connaitrait une troisième méthode qui serait la bonne ?
En fait il y aurait juste besoin de changer le Handle et d'ajuster la sécurité. Dans ma seconde méthode je vois bien qu'il est question de règle, droit et permission mais ces classes me parlent pas du tout.
Partager