VB6: aplicación de instancia única en todas las sesiones de usuario

Tengo una aplicación que debe ser una aplicación de instancia única en todas las sesiones de usuario en una PC con Windows. Mi investigación hasta ahora se ha centrado en usar un mutex para lograr esto, pero tengo un problema que no estoy seguro de que sea realmente un problema, esta es realmente una pregunta de mejores prácticas, creo.

Aquí está el código en primer lugar:

Private Const AppVer = "Global\UNIQUENAME" ' This is not what i am using but the name is unique

Public Sub Main()

    Dim mutexValue As Long

    mutexValue = CreateMutex(ByVal 0&, 1, AppVer)
    If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
        SaveTitle$ = App.Title
        App.Title = "... duplicate instance."
        MsgBox "A duplicate instance of this program exists."
        CloseHandle mutexValue
        Exit Sub
    End If
    ' Else keep on truckin'

Ahora, basado enesta Creo que entiendo que al pasar el puntero NULL a la función CreateMutex como estoy arriba, básicamente estoy asignando cualquier descriptor de seguridad asociado con el usuario actualmente conectado.

Si eso significa lo que creo que hace (es posible que necesite más orientación aquí) que me dice que otros usuarios que inicien sesión no podrán "ver" el mutex creado en la sesión del usuario original, ni podrán crear un mutex con el mismo nombre.

Ahora, la evidencia emperical parece respaldar esto. Utilicé un cuadro de mensaje para mostrar el "LastDLLError" que estaba recibiendo, y cuando otro usuario intentó iniciar la aplicación (mientras ya se estaba ejecutando bajo otra cuenta de usuario) recibiría un código ERROR_ACCESS_DENIED. Estoy de acuerdo con probar esto junto con el código ERROR_ALREADY_EXISTS y simplemente salir en / o. Sin embargo, esto se siente un poco hackear y me pregunto si alguien puede sugerir una alternativa. Lo "correcto" parece ser pasar el puntero adecuado a la función CreateMutex de modo que cualquier usuario tenga los permisos adecuados para ver cualquier mutex existente (¿mutices?), Pero no estoy tan seguro de que esto sea posible sin el actual El usuario conectado es un administrador (que es inaceptable). Cualquier ayuda / orientación es muy apreciada. ¡Gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta