VB6: Aplicativo de instância única em todas as sessões do usuário

Eu tenho um aplicativo que precisa ser um aplicativo de instância única em todas as sessões de usuário em um PC com Windows. Até agora, minha pesquisa se concentrou no uso de um mutex para fazer isso, mas estou tendo um problema que não tenho certeza de que seja realmente um problema; essa é realmente uma questão de práticas recomendadas em que acredito.

Aqui está o código antes de tudo:

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'

Agora, com base emesta artigo Creio que entendo que, passando o ponteiro NULL para a função CreateMutex, como estou acima, basicamente atribui qualquer descritor de segurança associado ao usuário conectado no momento.

Se isso significa o que eu acho que faz (talvez eu precise de mais orientações aqui) que me diz que outros usuários que efetuam login não poderão "ver" o mutex criado na sessão do usuário original, nem poderão criar um mutex com o mesmo nome.

Agora, evidências empíricas parecem apoiar isso. Usei uma caixa de mensagem para exibir o "LastDLLError" que estava recebendo e quando outro usuário tentava iniciar o aplicativo (enquanto ele já estava sendo executado em outra conta de usuário), recebia um código ERROR_ACCESS_DENIED. Eu estou bem com testes contra isso junto com o código ERROR_ALREADY_EXISTS e apenas saindo em / ou. No entanto, isso parece meio tolo e eu estou me perguntando se alguém pode sugerir uma alternativa. A coisa "certa" a fazer parece passar o ponteiro apropriado para a função CreateMutex, de modo que qualquer usuário tenha as permissões adequadas para exibir quaisquer mutexes existentes (mutices?), Mas não tenho tanta certeza de que isso seja possível sem o usuário logado como administrador (o que é inaceitável). Qualquer assistência / orientação é muito apreciada. Desde já, obrigado!

questionAnswers(3)

yourAnswerToTheQuestion