IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Empêcher l’exécution de la même application Accès simultanément dans la même session Windows


Sujet :

Sécurité

  1. #1
    Membre éclairé Avatar de possible924
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 306
    Par défaut Empêcher l’exécution de la même application Accès simultanément dans la même session Windows
    Bonjour à toutes et à tous.
    Je souhaite empêcher l’exécution de la même application Accès simultanément dans la même session Windows.
    Pouvez vous m'aider ?
    Merci par avance

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 137
    Par défaut
    Bonjour,

    une suggestion (non testée) : lire le fichier .laccdb et regarder s'il contient le nom de l'ordinateur
    Pour info ce dernier se trouve dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environ("computername")

  3. #3
    Membre éclairé Avatar de possible924
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 306
    Par défaut Merci pour la réponse
    Bonjour,
    Je ne sais pas comment lire le fichier .laccdb
    et que faire après ?
    Merci par avance

  4. #4
    Rédacteur/Modérateur


    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 744
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    En me basant sur la proposition de nico84 que je salue au passage , voici le code que me propose Gemini, à mettre dans une macro Autoexec :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    ' Fonction qui vérifie si l'application est déjà ouverte dans la même session Windows
    Public Function VerifierInstanceUnique() As Boolean
        Dim FichierLock As String
        Dim Contenu As String
        Dim NumFichier As Integer
        Dim ChaineRecherche As String
        Dim Pos As Long
        Dim Occurrences As Integer
     
        ' 1. Construire le chemin du fichier de verrouillage (.laccdb ou .ldb)
        ' CurrentProject.FullName donne le chemin complet du fichier actuel (ex: C:\Base.accdb)
        FichierLock = Left(CurrentProject.FullName, InStrRev(CurrentProject.FullName, ".")) & "laccdb"
     
        ' Si vous utilisez un vieux format (.mdb), décommentez la ligne suivante :
        ' FichierLock = Left(CurrentProject.FullName, InStrRev(CurrentProject.FullName, ".")) & "ldb"
     
        ' 2. Vérifier si le fichier de verrouillage existe (il devrait, puisque cette instance est ouverte)
        If Dir(FichierLock) = "" Then
            VerifierInstanceUnique = True
            Exit Function
        End If
     
        ' 3. Construire la chaîne à chercher : "NomOrdinateur" et "NomUtilisateur"
        ' Access formate souvent le fichier avec le nom de la machine suivi du login
        ChaineRecherche = Environ("COMPUTERNAME")
     
        ' 4. Lire le fichier .laccdb (en mode partagé pour ne pas bloquer Access)
        NumFichier = FreeFile
        Open FichierLock For Binary Access Read Shared As #NumFichier
        Contenu = Space$(LOF(NumFichier))
        Get #NumFichier, , Contenu
        Close #NumFichier
     
        ' 5. Compter combien de fois le nom de l'ordinateur apparaît
        ' (Pour être encore plus précis dans la même session, on cherche l'ordinateur.
        ' Si l'utilisateur lance une 2e instance, l'ordinateur apparaîtra 2 fois)
        Pos = InStr(1, Contenu, ChaineRecherche, vbTextCompare)
        Do While Pos > 0
            Occurrences = Occurrences + 1
            Pos = InStr(Pos + 1, Contenu, ChaineRecherche, vbTextCompare)
        Loop
     
        ' 6. Si l'ordinateur apparaît plus d'une fois, c'est qu'une autre instance tourne
        If Occurrences > 1 Then
            MsgBox "L'application est déjà ouverte dans votre session Windows.", _
                   vbCritical + vbOKOnly, "Instance déjà active"
            ' On ferme proprement cette deuxième instance à la suite dans la macro appelante si : VerifierInstanceUnique = False
            VerifierInstanceUnique = False
        Else
            VerifierInstanceUnique = True
        End If
    End Function
    Je joins également la base test.

    Cdlt
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 93
    Par défaut
    Pour lister les processus encours et vérifier les fichiers ouverts:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
    For Each objItem In colItems
       Debug.Print objItem.Name & ":", objItem.CommandLine
    Next
    End Sub

Discussions similaires

  1. Accès simultanés : bloquer la lecture d'une table
    Par rohstev dans le forum Access
    Réponses: 12
    Dernier message: 01/02/2008, 20h04
  2. Réponses: 1
    Dernier message: 29/12/2006, 09h07
  3. [Axis][WebService]accès simultanés à un Webservice
    Par olivierda dans le forum Services Web
    Réponses: 6
    Dernier message: 08/12/2006, 18h36
  4. [SQLServer] Acces simultanés a une BD via ADO dans un dll
    Par corwin_d_ambre dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/11/2004, 15h52
  5. Réponses: 7
    Dernier message: 08/03/2004, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo