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

VB 6 et antérieur Discussion :

Erreur 76 mais pas sur tous les postes


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Erreur 76 mais pas sur tous les postes
    Bonjour tout le monde,
    J'aurais besoin d'un conseil d'un expert ...
    J'ai deux programmes développés en VB6 : Olga2000 et OlgaCopy.
    Olga2000 est le programme principal et vérifie automatiquement au démarrage et toutes les 10 minutes si une mise à jour est disponible.
    Je précise que je travaille dans un environnement réseau (10 postes) et que les données se trouvent sur un NAS Synology.
    L'exécutable est dans le dossier C:\Program Files (x86)\Olga 2000\ et la mise à jour et OlgaCopy se trouvent sur le NAS dans le dossier O:\Olga 2000\
    Au cas où une mise à jour est dispo, Olga2000 copie dans son dossier la dernière version de OlgaCopy et génère un fichier "texte" qui contient la source et la destination du fichier et lance ensuite OlgaCopy.
    OlgaCopy lit le fichier afin de copier le fichier source (O:\Olga 2000\Olga2000.ex_) vers le dossier de destination (C:\Program Files (x86)\Olga 2000\Olga2000.exe)
    Olga2000 arrive bien à copier OlgaCopy.ex_ vers OlgaCopy.exe (qu'il existe déjà ou non) mais lorsque OlgaCopy veut copier Olga2000, j'obtiens une erreur 76.

    Je ne comprends pas vraiment pourquoi un programme sait copier l'autre et pas l'inverse !
    Je précise que ce programme de mise à jour fonctionne très bien sur les autres postes.
    On dirait qu'un truc de sécurité de Microsoft fait barrage ...
    J'ai tenté de définir Utilisateurs comme propriétaire du dossier et d'accorder toutes les autorisations à Utilisateurs, Administrateurs, Tout le monde, Système, ... mais sans succès !

    J'espère avoir été clair dans la description !

    Quelqu'un aurait-il une idée géniale ?

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 165
    Points
    1 165
    Par défaut
    Citation Envoyé par BootsLover Voir le message
    Olga2000 arrive bien à copier OlgaCopy.ex_ vers OlgaCopy.exe (qu'il existe déjà ou non) mais lorsque OlgaCopy veut copier Olga2000, j'obtiens une erreur 76.
    Tu peux donner :
    • Le contenu de ton fichier "texte"
    • Les lignes de programme que tu utilises pour copier OlgaCopy.ex_ vers OlgaCopy.exe et pour copier Olga2000

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 877
    Points
    1 877
    Par défaut
    Je ne sais pas à quoi correspond l'erreur 76, donc une recherche vite fait suggère que c'est un problème de "Path not found".
    A partir de là, et sans avoir beaucoup de détails sur votre environnement, j'émettrais l'hypothèse que peut-être le drive O: n'est pas monté sur un PC.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    Tu peux donner :
    • Le contenu de ton fichier "texte"
    • Les lignes de programme que tu utilises pour copier OlgaCopy.ex_ vers OlgaCopy.exe et pour copier Olga2000
    Bonjour,

    Voici la portion de code dans Olga2000 pour lancer OlgaCopy :
    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
        Fso.CopyFile strDBPath & "OlgaCopy.ex_", App.Path & "\OlgaCopy.exe", True          '<---- Ne génère pas d'erreur 76
        Open App.Path & "\OlgaCopy.dat" For Output As #1
        'Entrée pour copie du programme
        Write #1, strDBPath & "Olga2000.ex_" & "|" & App.Path & "\Olga2000.exe" & "|" & "ADD"
        'Entrée(s) pour copie des fichiers présents dans OcxDll
        SourceOcx = strDBPath & "OcxDll\"
        For Each Fichier In Fso.GetFolder(SourceOcx).Files
            NomFichier = Fichier.Name
            FichierSource = SourceOcx & NomFichier
            FichierCible = WinSysPath & NomFichier
            Copier = False
            If Fso.FileExists(FichierCible) = False Then
                Copier = True
            Else
                If Fso.GetFileVersion(Fichier) > Fso.GetFileVersion(FichierCible) Then
                    Copier = True
                Else
                    Set FsoFile = Fso.GetFile(Fichier)
                    CréationSource = FsoFile.DateLastModified
                    Set FsoFile = Fso.GetFile(FichierCible)
                    CréationCible = FsoFile.DateLastModified
                    If CréationSource > CréationCible Then Copier = True
                    Set FsoFile = Nothing
                End If
            End If
            If Copier Then
                Write #1, FichierSource & "|" & FichierCible & "|" & "ADD"
                Write #1, "" & "|" & FichierCible & "|" & "REG"                                 '<-------- "" & : fait volontairement !
            End If
        Next
        Write #1, "{STOP}"
        Close #1
     
        'Set Fso = Nothing
     
        ShellExecute 0, "runas", App.Path & "\" & "OlgaCopy.exe", "", App.Path, vbNormalFocus
        End
    Voici le contenu de OlgaCopy.dat :

    "O:\Olga2000\Olga2000.ex_|C:\Program Files (x86)\Olga 2000\Olga2000.exe|ADD"
    "O:\Olga2000\OcxDll\LynxGrid.ocx|C:\WINDOWS\SysWOW64\LynxGrid.ocx|ADD"
    "|C:\WINDOWS\SysWOW64\LynxGrid.ocx|REG"
    "O:\Olga2000\OcxDll\QRCodeLib.dll|C:\WINDOWS\SysWOW64\QRCodeLib.dll|ADD"
    "|C:\WINDOWS\SysWOW64\QRCodeLib.dll|REG"
    "O:\Olga2000\OcxDll\XP_ProgressBar.ocx|C:\WINDOWS\SysWOW64\XP_ProgressBar.ocx|ADD"
    "|C:\WINDOWS\SysWOW64\XP_ProgressBar.ocx|REG"
    "{STOP}"
    Voici le morceau de code dans OlgaCopy qui exploite le fichier ci-dessus :

    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
        Set Fso = New FileSystemObject
        Chemin = App.Path
        If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
        NomFichier = Chemin & "OlgaCopy.dat"
    
        If Fso.FileExists(NomFichier) Then
            Open NomFichier For Input As #1
            Do
                Input #1, FichierACopier
                If FichierACopier <> "{STOP}" Then
                        Ou = InStr(FichierACopier, "|")
                        FichierSource = Left(FichierACopier, Ou - 1)
                        FichierACopier = Mid(FichierACopier, Ou + 1)
                        Ou = InStr(FichierACopier, "|")
                        FichierCible = Left(FichierACopier, Ou - 1)
                        Action = Mid(FichierACopier, Ou + 1)
                        Select Case Action
                            Case "ADD"
                                Fso.CopyFile FichierSource, FichierCible, True                   '<----- ligne qui génère l'erreur 76
                            Case "REG"
                                ShellExecute 0, "", "regsvr32 /s /e " & FichierCible, "", Chemin, vbHide
                            Case "DEL"
                                Fso.DeleteFile FichierCible, True
                        End Select
                        DoEvents
                End If
            Loop Until FichierACopier = "{STOP}"
            Close #1
    Olga2000.exe et OlgaCopy.exe sont dans le dossier "C:\Program Files (x86)\Olga 2000\"

  5. #5
    Membre confirmé Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 343
    Points : 493
    Points
    493
    Par défaut
    le lecteur O est accessible ? les fichiers existent?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 238
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 238
    Points : 1 808
    Points
    1 808
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FichierSource = Left(FichierACopier, Ou - 1)
    FichierACopier = Mid(FichierACopier, Ou + 1)
    Ou = InStr(FichierACopier, "|")
    ça devrait sauter aux yeux si j’extraie ces 3 lignes là, non ?
    Ou n'est pas défini avant la 3ème ligne extraite, donc doit valoir 0 pour les 2 lignes précédentes, donc je ne suis pas sûr que FichierSource et FichierAcopier contiennent des chemins valides.

    Le script va fonctionner si il n'y a pas de fichier OlgaCopy.dat (et ne passe alors pas dans le IF et sa boucle)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai du oublier une ligne de code dans le copier-coller !
    Je vais corriger la publication !

    J'ai bien évidemment suivi le code pas à pas pour vérifier que toutes les variables sont bien garnies !
    Je le dis et je le répète : ce code fonctionne sur 9 ordinateurs depuis longtemps mais pas sur le dernier que j'ai réinstallé cette semaine !
    C'est donc vraisemblablement un problème de droit de dossiers !

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 238
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 238
    Points : 1 808
    Points
    1 808
    Par défaut
    sur la machine en question, essaie d'accéder aux dossiers en mettant leur emplacement dans l'explorateur de fichier, tu verras ainsi si tu as l'accès à chacun, pour commencer.
    Je pense comme licardentaistor que le O n'est pas accessible ou pointe sur un autre endroit (ou effectivement un problème de droit, vu que Program Files (x86) et autres ne sont plus écrivables sans élévation de droits administrateur par défaut. (donc il faudrait ajouter les droits uniquement sur ton dossier "Olga 2000")

    Autre chose (qui n'a rien à voir avec le souci), tu pourrais utiliser Split au lieu de passer par 2 instr + left et mid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Ou = InStr(FichierACopier, "|")
    FichierSource = Left(FichierACopier, Ou - 1)
    FichierACopier = Mid(FichierACopier, Ou + 1)
    Ou = InStr(FichierACopier, "|")
    FichierCible = Left(FichierACopier, Ou - 1)
    Action = Mid(FichierACopier, Ou + 1)
    deviendrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim arrayFichiers() as string
    arrayFichier=Split(FichierACopîer,"|")
    FichierSource=arrayFichiers(0)
    FichierCible=arrayFichiers(1)
    Action=arrayFichiers(2)

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    @umfred :

    Le disque mappé sous O est bien disponible vu que Olga2000 va chercher le fichier OlgaCopy.ex_ dans ce dossier.
    J'ai même tenté de faire un package d'installation pour OlgaCopy pour voir si son installation (normale) n'allait pas fixer des droits mais sans aucun succès.

    Bien vu pour Split ...
    je ne pense pas souvent à Split !

    Je pense aussi qu'il s'agit d'un problème de droit aux dossiers mais ce que je ne comprends pas c'est pourquoi le programme A arrive à copier le programme B et que B n'arrive pas à copier A alors que les dossiers source et destination sont les mêmes !

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 238
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 238
    Points : 1 808
    Points
    1 808
    Par défaut
    Tu as vérifié que le chemin c:\Program Files (x86)\Olga 2000 existait bien sur les PC qui posent soucis ?
    Sur un windows 32 bits, il me semble que "Program Files (x86)" n'existe pas (pas de nécessité de faire une différence entre appli 64 bits et 32 bits).

    Auquel cas, l'explication du problème serait dans le 1er script tu utilises App.Path, ce qui ne posera jamais de souci, alors que dans le 2nd, tu utilises explicitement "Program Files (x86)", qui s'il n'existe pas, causerai l'erreur 76 à mon avis.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Le répertoire existe bien vu que Olga2000 copie le fichier OlgaCopy.ex_ et créé le fichier OlgaCopy.dat dans ce dossier.

    J'ai vu que certains programmes utilisaient un dossier dans C:\Users\moi\AppData\Local\... au lieu de C:\Program Files (x86)\...
    Je vais faire le test. Ce dossier est peut-être moins bridé par la "sécurité" Windows !

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/06/2022, 16h41
  2. Visual Studio - Erreur qui ne revient pas sur tous les postes
    Par chimere28 dans le forum Visual Studio
    Réponses: 9
    Dernier message: 08/10/2019, 19h43
  3. [Toutes versions] Interroger access depuis Excel - Ne fonctionne pas sur tous les postes
    Par debdev dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2012, 14h55
  4. [Déploiement] Pourquoi mon application ne fonctionne pas sur tous les postes ?
    Par Willthelegend dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2008, 20h34
  5. Réponses: 6
    Dernier message: 14/05/2008, 16h46

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