1
votes

Comment résoudre les formulaires VB6 qui plantent avec Unload Me dans Windows 10?

J'essaie d'installer une application VB6 sur les ordinateurs Windows 10, mais lorsque je charge un formulaire enfant puis le décharge, le programme se bloque. Si je lance l'application en tant qu'administrateur à partir du raccourci, je peux tout charger et décharger sans problème. Avez-vous déjà vécu cela?

Jusqu'à présent, j'ai essayé ce qui suit:

  • Démarrage du .exe directement en tant qu'administrateur. Ne fonctionne pas.
  • Cochez la case Exécuter en tant qu'administrateur dans le menu contextuel (Propriétés / Compatibilité) du .exe. Pas bon.
  • Création d'un fichier .reg pour affecter les clés HLKM \ ... \ AppCompatFlags \ Layers . Nada.
  • J'ai essayé d'affecter les clés HKLM ET HKCU. Merci, ensuite.
  • Vérifié si un jeu d'enregistrements ou une variable était rempli ou actif. Tout est vide.
  • J'ai essayé de Décharger [nom du formulaire] au lieu de Décharger moi pour l'un des formulaires. Même résultat.

Une partie du code de déchargement pour l'un des formulaires est la suivante:

Private Sub cmdSalir_Click()
On Error GoTo ErrHandler

Dim frm As Form       'Identifica las formas a cerrar
    For Each frm In Forms
        If Not frm Is frmPoliza And Not frm Is MDIPrincipal Then
            If Not frm Is frmAsegNoReclam And Not frm Is frmEndosoMedico Then _
                Unload frm
            End If
    Next frm
    gsPlan = ""
    gmstrInstPagoInd = ""
    gmstrCondEnv = ""

    If IsFormLoaded("frmCotiza") = False Then
        'gbInicio = True
    End If

    Unload Me
ErrHandler:                 'APM 2019-01-31: Captura el error que se provoca al descargar la forma
    If Err.Number <> 0 Then
        MsgBox "Ocurrió un error al cerrar: " & Err.Number & " - " & Err.Description, vbOKOnly
    End If
End Sub

Il est important de dire que les installations de WinXP fonctionnent correctement, mais en 2 ordinateurs de Win10 l'erreur a été répliquée, donc je suppose que les politiques de sécurité de Win10 ou la façon dont le package d'installation est créé a quelque chose à voir avec cela.

Si vous pouvez m'aider avec ce problème, je l'apprécierai beaucoup.

Merci,

Tony.


5 commentaires

Peut-être que vous effectuez une opération dans un événement Query_Unload ou un événement Form_Unload qui nécessite des droits élevés?


Pouvez-vous ajouter quelques détails sur le crash lui-même à la question? Quel message d'erreur (le cas échéant)? Quelque chose dans les journaux d'événements Windows?


Quelle version de Windows 10? (Cela compte!)


MarkL: Rien n'est élevé. Revérifié. DaveInCaz: aucun message d'erreur émis et aucun événement dans le journal. R.J.Dunnill: Windows 10 Professionnel et Entreprise.


1703? 1709? 1803? 1809?


3 Réponses :


0
votes

Si le problème est que vous devez exécuter avec des droits élevés, alors je vous suggère de déclarer cela dans votre manifeste d'application de sorte que l'utilisateur soit invité à l'accorder. Vous pouvez soit créer un fichier manifeste distinct, soit l'intégrer. Voir ici pour plus de détails:

Comment créer un fichier manifeste dans Visual Basic 6.0?


3 commentaires

Fait le manifeste, et cela a partiellement aidé (a résolu d'autres choses, mais pas ce problème particulier).


Cela a-t-il au moins forcé l'utilisateur à être invité à élever ses privilèges?


Oui, c'est vrai. Juste le "Êtes-vous sûr?" popup, mais c'était quelque chose.



0
votes

J'ai donc informé le client de ce problème et j'ai décidé de virtualiser le programme sous XP mieux que de l'adapter à x64. Pas la clôture que je voulais, mais une clôture après tout.

Merci à tous pour vos efforts.


0 commentaires

0
votes

Je ne sais pas si cela résoudra le problème spécifique, mais j'ai constaté que l'exécution de l'application en mode de compatibilité Windows 8 sur Windows 10 aide à résoudre des problèmes comme celui-ci. Ça vaut le coup d'essayer.


0 commentaires