2016-02-12 1 views
0

La création d'une DLL ATL COM dans Vs2015 pour un consommateur VB6 va mal car le "sheap" tolérant aux pannes est appliqué à VB6, que j'exécute depuis la commande de débogage vs2015.Heap tolérant aux pannes dans Windows 10 sous vs2015

J'ai trouvé beaucoup de messages sur la désactivation de FTH dans Windows 7, et je les ai tous appliqués, y compris la suppression de la DLL dans \ Windows \ AppPatch, ainsi que la désactivation de FTH dans le registre et l'exécution du script rundll . Pourtant, cette foutue chose me rend impossible de déboguer la DLL, car la FTH la fait fonctionner comme un chien sous VB6 en mode debug.

J'ai même ajouté "vb6.exe" et "full_path_to_vb6.exe" dans la liste des exclusions du registre - en vain. En désespoir de cause, et ayant besoin de faire un peu de travail aujourd'hui, j'ai renommé vb6.exe en myvb7.exe (!) Et cela supprime l'alerte FTH dans le débogueur VS. Mais pourquoi ne puis-je désactiver FTH pour vb6.exe?

En fait, pourquoi est-il même activé quand un débogueur est connecté? Ça m'a rendu fou aujourd'hui.

Quelqu'un?

+0

https://stackoverflow.com/questions/5020418/how-do-i-turn-off-the-fault-tolerant-heap –

+0

Cela peut avoir un rapport avec vb6.exe ayant une entrée dans la construction dans la base de données de compatibilité. Sur Windows 7, cette entrée ne semble pas forcer le tas tolérant aux pannes, mais elle peut être différente sur Windows 10 - ou l'un des autres shims appliqués peut affecter indirectement la décision d'utiliser le FTH. (Vous pouvez examiner la base de données de compatibilité à l'aide de Microsoft Application Compatibility Toolkit.) –

+0

@Jonathan: aucun des messages liés ne fait de différence sur Windows 10 avec vb6, comme je l'ai décrit dans ma question – user5916352

Répondre

0

Il n'y avait pas trop d'aide à ce sujet. Pour référence future, si l'application (dans ce cas VB6) est configurée pour fonctionner en mode de compatibilité (soit à partir d'un clic droit sur le raccourci que vous utilisez pour le lancer, soit à partir d'une propriété sur l'exe cible) va libérer la cale!

Solution: n'exécutez pas vb6 en mode de compatibilité sous Windows 10!

+0

Cela ne ressemble pas beaucoup à une solution. Utilisez une machine virtuelle qui démarre XP à la place. Quelqu'un devrait faire à ce client une offre qu'il ne peut pas refuser :) –