begin process at 2012 02 13 11:32:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de registre

 > ISOLATION D'APPLICATION PAR MANIFEST (WINXP)

ISOLATION D'APPLICATION PAR MANIFEST (WINXP)


 Information sur la source

Note :
9,33 / 10 - par 6 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de registre Niveau :Initié Date de création :24/12/2004 Vu / téléchargé :10 294 / 1 072

Auteur : philheiz

Ecrire un message privé
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette application écrit des fichiers '.manifest' qui remplacent la base de registre.

Source

  • Voilà le principe:
  • Une appli dépend (presque) toujours de fichiers externes tels que des DLL ou des OCX (généralement appelés Dependency Files ou Dependencies en anglais). Généralement, ces dépendances doivent être placées dans le dossier System de la machine ou inscrites dans la base de registre.
  • Grâce à un fichier Manifest (XML, donc parfaitement lisible avec IE) on peut assez facilement se débarrasser de la base de registre: il suffit de placer le fichier de dépendance (par ex. un OCX) dans le dossier de l'appli qui en a besoin et de placer deux fichier Manifest dans ce même dossier.
  • Le premier Manifest est spécifique à l'appli et porte son nom avec l'extention .manifest; ce fichier contient toutes les références de l'appli à des fichiers dépendants.
  • Le deuxième fichier contient toutes les clés de registre du composant OCX, soit 'clsid', 'tlbid', 'progid' et éventuellement 'description'.
  • ----------------------------
  • Les avantages de cette méthode:
  • Si la base de registre est vérouillée par l'administrateur, il devient presque impossible d'installer quoi que ce soit sur une machine sans avoir des privilèges particuliers. Cette méthode permet de contourner cette restriction dans pas mal de cas.
  • On peut sans aucun probléme utiliser différentes versions du même composant sur la même machine.
  • ----------------------------
  • Les inconvénients:
  • Il faut être capable de créer des fichiers Manifest.
  • Attention:
  • Un fichier Manifest ne peut être créé que sur une machine où l'application à isoler est installé normalement (où tous les composants sont inscrits dans la base de registre).
  • ----------------------------
  • L'interface:
  • Trois Tabs ou onglets:
  • Le premier (Application) permet de créer tous les fichiers Manifest nécessaire à une appication entière
  • 1. Ouvrir l'appli à isoler
  • 2. Extraire les infos concernant les dépendances -> bouton 'Get Dependencies'
  • 3. Ecrire le paquet de fichiers Manifets -> bouton 'Write Isolation Package'
  • Le bouton 'Add from file' permet d'ajouter une dépendance à la liste.
  • Le bouton 'Add names': idem
  • Le bouton 'Scan Registry' permet de récupérer toutes les infos registre des composants, sans écrire de fichier Manifest.
  • L' option 'Write Application Manifest only' permet, si elle est cochée, de n'écrire que le premier fichier Manifest: celui spécifique à l'appli.
  • Le deuxième Tab (Single) permet de rédiger les fichiers Manifest spécifiques à des dépendances.
  • Utilisation similaire au premier Tab.
  • Le troisième Tab (Common Dependencies) permet de créer une liste de dépendances standard pour lesquelles aucun fichier Manifest ne doit être écrit (p. ex. vba6.dll, vb6fr.dll, etc...)
Voilà le principe:

Une appli dépend (presque) toujours de fichiers externes tels que des DLL ou des OCX (généralement appelés Dependency Files ou Dependencies en anglais). Généralement, ces dépendances doivent être placées dans le dossier System de la machine ou inscrites dans la base de registre. 

Grâce à un fichier Manifest (XML, donc parfaitement lisible avec IE) on peut assez facilement se débarrasser de la base de registre: il suffit de placer le fichier de dépendance (par ex. un OCX) dans le dossier de l'appli qui en a besoin et de placer deux fichier Manifest dans ce même dossier.
Le premier Manifest est spécifique à l'appli et porte son nom avec l'extention .manifest; ce fichier contient toutes les références de l'appli à des fichiers dépendants.
Le deuxième fichier contient toutes les clés de registre du composant OCX, soit 'clsid', 'tlbid', 'progid' et éventuellement 'description'.

----------------------------
Les avantages de cette méthode:

Si la base de registre est vérouillée par l'administrateur, il devient presque impossible d'installer quoi que ce soit sur une machine sans avoir des privilèges particuliers. Cette méthode permet de contourner cette restriction dans pas mal de cas.

On peut sans aucun probléme utiliser différentes versions du même composant sur la même machine.

----------------------------
Les inconvénients:

Il faut être capable de créer des fichiers Manifest.

Attention:

Un fichier Manifest ne peut être créé que sur une machine où l'application à isoler est installé normalement (où tous les composants sont inscrits dans la base de registre).

----------------------------
L'interface:

Trois Tabs ou onglets:

Le premier (Application) permet de créer tous les fichiers Manifest nécessaire à une appication entière
1. Ouvrir l'appli à isoler
2. Extraire les infos concernant les dépendances -> bouton 'Get Dependencies'
3. Ecrire le paquet de fichiers Manifets -> bouton 'Write Isolation Package'
	Le bouton 'Add from file' permet d'ajouter une dépendance à la liste.
	Le bouton 'Add names': idem
	Le bouton 'Scan Registry' permet de récupérer toutes les infos registre des composants, sans écrire de fichier Manifest.
	L' option 'Write Application Manifest only' permet, si elle est cochée, de n'écrire que le premier fichier Manifest: celui spécifique à l'appli.


Le deuxième Tab (Single) permet de rédiger les fichiers Manifest spécifiques à des dépendances.
Utilisation similaire au premier Tab.

Le troisième Tab (Common Dependencies) permet de créer une liste de dépendances standard pour lesquelles aucun fichier Manifest ne doit être écrit (p. ex. vba6.dll, vb6fr.dll, etc...)

 Conclusion

merci à ebartsoft pour la classe CommonDialog

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

CRÉER UNE DSN ODBC (VBA/VB6)
FONCTION ENVIRON EN VBSCRIPT / VBS
FONCTIONS POUR TABLEAUX (ARRAY)
SCRIPT QUI PERMET D'EXTRAIRE DES PIÈCES JOINTES OUTLOOK ET D...
FONCTIONS FICHIERS (FILE & PATH)

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) SHELLVIEW EN VB.NET par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) AJOUTER OU SUPPRIMER MENU CONTEXTUEL D'APPLICATION PAR CLIC ... par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) MODIFIER IMAGE COULEUR EN NOIR ET BLANC PAR CLIC DROIT par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) RENOMMER TOUS LES FICHIERS D'UN DOSSIER PAR CLIC DROIT par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) REDIMENSIONNER ET IMPRIMER FORMAT PHOTO (10X15) par Le Pivert

Commentaires et avis

Commentaire de ticomic le 24/12/2004 19:30:10

Cool.
Y faut être sur un ordi verrouillé pour l'essayé? Mais si l'ordi est verrouillé, comment on peut partir le prog, si on a pas les fichiers de l'ordi verrouillé sur notre disque dur?  
Sans blague, je peux pas partir aucun programme sur l'ordi que je veux....ouvrir, alors comment je pourrais avoir accès à ses fichiers avec un programme que je peux pas partir?

Très bien pensé quand même, mais y faut l'utiliser avant que l'ordi soit verrouillé (sauf si il n'interdit pas toutes les appliccations ormi celles permises).

Commentaire de philheiz le 25/12/2004 13:35:55

Exemple:

Tu développes (chez toi) une source nommée XYZ, qui possède une référence à Comdlg32.ocx (qui ne fait pas partie du paquet standard Microsoft, comme Comdlg32.dll).
Tu compiles XYZ.exe et tu veux l'installer sur ton PC au boulot. Le problème, c'est que tu n'a pas de droit admins au boulot et qu'en plus ta base de registre est vérouillée: la tuille ! tu ne peux pas inscrire Comdlg32.ocx dans ta base de registre; donc pas d'installation de XYZ.exe possible.
Mais voilà: au boulot vous bosser (déjà) sur XP. Donc tu peux quand même utiliser XYZ.exe ! Pour ce faire, sur ton PC perso (à la maison), tu utilises mon appli pour écrire les manifest de XYZ.exe.
Tu copies XYZ.exe, les manifest, et Comdlg32.ocx sur une disquette, tu prends tout ca au boulot et tu copies le tout dans un même dossier. Double.click sur XYZ.exe... et ca marche !

Le système d'exploitation a reconnu la présence des fichiers manifest dans le dossier de ton appli (XYZ.exe) et reconnait que ces fichiers contiennent les inscriptions registre idoines. XP ne va plus dans la BR, il a toutes les infos dans les manifest.

Le pieds !

Commentaire de BozzoDodo le 09/03/2005 20:45:24

Ca marche sur toutes les versions de windows?

Commentaire de philheiz le 13/03/2005 19:15:37

xp et plus.  
il me semble que les manifests sont pris en charge par le système d'exploitation depuis l'existance de la plate-forme .net

Commentaire de rt15 le 23/05/2005 09:34:26 administrateur CS

C'est super ton truc.

Cependant, j'ai constaté que ton code qui sert à détecté les dll et ocx nécessaires à un exe ne fonctionne que rarement (peut être jamais). C'est vrai que ta méthode de recherche dans le texte est osée, mais elle ne constate par exemple pas que l'exe de ton exemple a besoin de son dll.

J'ai fait un test sur un pc 'sécurisé' d'un réseau sous XP avec une de mes dll manifester sans le moindre problème.

Cependant, si la méthode marche parfaitement pour les dlls que j'ai fait, je m'inquiète de certains fichiers systèmes. En effet, l'empaqueteur de VB fournit différent fichiers (comcat.dll,  stdole32.tlb, olepro32.dll, oleaut32.dll, msvbvm60.dll...) Certains de ces fichiers ont des clés dans la base de registre et accèptent regsvr32. Mais j'ai eu de grosses difficultés à rédiger leurs manifests. Ces fichiers sont ils vraiment nécessaires ? Sont ils toujours présent sous NT ? Pourquoi msvbvm60.dll est parfois écrit msvbvm60.dll\3 ? Si quelqu'un le souhaite, je peux envoyer plus d'infos sur ces fichiers.

Commentaire de mathwu le 08/04/2006 14:22:12

Salut, je comprend pas pourquoi mais j'arrive pas à compiler et quand je débug, je trouve unne erreur dans frmMain:
Set itmX = Me.lvSys.ListItems("k" & varComDepend(i))
D'ou viens l'erreur, je comprend pas?
Merci a qui veut bien m'aider..

Commentaire de philheiz le 10/04/2006 08:40:35

qu'est ce qu'il te dit exactement ? (même s'ils sont souvent inutilisables, les messages d'erreurs de MS fournissent parfois une indication sur l'origine du blème).

Commentaire de mathwu le 11/04/2006 13:45:19

Si j'essaye de compiler, il me dit erreur système &H80004005 (-2147467258), et si je "run", il plante quand je demande "get dependancies"..

Domage car je trouve le concept très interressant car ca nous paserait les contraintes des registres...

Commentaire de mathwu le 11/04/2006 14:37:55

en fait, est ce que l'on peut pas plutôt utiliser Windasm pour touver les dépendances, puis les ajouter manuellement (alors le programme d'écriture des manifest fonctionne). De cette manière , on est sûr de na pas avoir de dll qui ne sont pas appeler par le programme...? Qu'est ce vous en pensé??
Pour les ocx je suis pas sur que windasm nous indique l'utilisation des fichiers...

Commentaire de rt15 le 11/04/2006 18:41:35 administrateur CS

Bin normalement, tu es au courant des dlls et ocxs que tu utilises. Quand tu rajoute un contrôle ActiveX dans la barre d'outil de VB6, tu peux noter le nom du fichier. Pareil pour les dlls ActiveX. Et pour les dlls classiques, t'as le nom dans la déclarations de routines...

De base, tu as un certain nombre de dlls nécessaire pour VB6, telles que ceux que j'ai cité plus haut (comcat.dll,  stdole2.tlb (et pas 32, erratum), olepro32.dll, oleaut32.dll, msvbvm60.dll...)

Mais en général elle sont présente et en version suffisante, sauf vb6fr.dll mais qui n'a pas besoin d'installation (Suffit de la mettre dans system32 ou un autre chemin de path, ou dans le même rep que le .exe).

windasm te signalerat certainement des dlls classiques, comme kernel32.dll, comctl32.dll, user32.dll...

Ce sont des dlls pillier de windows, et vaux mieux pas essayer de les changer.

Commentaire de mathwu le 11/04/2006 21:08:15

je suis désolé mais je suis débutant sur VB6..
Je cherche pas à isoler VB6.. dnc je vais pas touché a ces DLL..!
Windasm me signale tous les dll il me semble, et les programme de PHILHEINZ permet d'excule les DLL qui font partis du système

Juste domage de ne pas pouvoir le compliler pour l'utiliser, puisqu'il y a cette erreur que je ne sais pas règler!!


Commentaire de willou62 le 20/06/2006 22:08:42

Excellente source!!! cela me permet de conserver le travail sur mes sources sans les brider face à des restrictions. Bon boulot et merci!

Commentaire de poiuytr0023 le 31/10/2006 16:52:26

Nous avons teste votre outil qui est excellent neanmoins petite remarque, vous avez code en dur dans les sources le numero de version pour chaque dll (a chaque fois la version 1.0.0.1 est specifiee), est ce que cela ne peut pas poser de problemes lors des evolutions futures des versions des dll ?

SPOT Team K.R.D

Commentaire de Delbeke le 10/02/2007 20:21:36

Excellent source, magnifique devrais-je dire !

J'ai cependant quelques difficultés avec le composant DbGrid32.ocx qui semble etre un  peu plus trapu que d'autres ocx. Auriez vous quelques pistes que je pourais explorer ?

Commentaire de Renfield le 21/10/2008 03:34:53 administrateur CS

concept repris dans cette source :
http://www.vbfrance.com/codes/ISOLATOR-GENEREZ-FICHIERS-MANIFEST-VOS-EXE-DLL-OCX_48269.aspx

bonne continuation.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales