Question

sait quelqu'un comment puis-je embedd un fichier exe dans une dll?

J'ai un outil qui est un fichier exe que j'appelle à partir du code c #.

La chose est que je veux avoir 1 dll contenant cet outil (fichier exe) et le dll containg mon code c #.

Est-il possible de embedd ce fichier exe dans les ressources?

Thx à l'avance

Était-ce utile?

La solution

il est sûr. Vous pouvez ajouter un fichier en tant que RC_DATA en application en tant que ressource. Mais je crois que vous aurez besoin d'extraire le disque avant de l'appeler!

Quel IDE / langue que vous utilisez?

[EDIT]

Désolé! vous avez dit que vous utilisez C #.

  1. Ajouter un fichier de ressources à votre application (clic droit dans l'application IDE et sélectionnez « Ajouter un nouvel élément ».
  2. Utilisez la barre d'outils dans l'éditeur de ressources pour ajouter un fichier existant.
  3. extraire ensuite l'exe chaque fois que nécessaire en appelant quelque chose comme code: System.IO.File.WriteAllBytes (@ "C: \ MyEXE \", Resource1.MyEXE);

Autres conseils

Il vaut la peine de Baring à l'esprit que vos utilisations peuvent ne pas être trop heureux de vous faire. L'intégration d'un exécutable qui ils ont aucun contrôle sur dans une DLL que vous allez extraire et exécuter probablement que les gens vous soucier de la course un cheval de Troie sur leur machine.

Il est préférable de laisser le .EXE dans le système de fichiers et être transparent sur ce que fait votre application.

Vous pouvez charger une Assemblée d'un octet []. Ceci peut être obtenu par le ManifestResourceStream d'une ressource intégrée.

Une autre solution peut être de ne pas intégrer le .exe lui-même, mais plutôt inclure sa fonctionnalité dans le dll et utiliser rundll32 [ 1 ] pour l'exécuter.

Sur une note de côté, rappelez-vous que lorsque vous tirez un fichier à partir de vos ressources sur le disque, puis exécuter du code sur, vous pouvez déclencher de Windows prévention de l'exécution des données - essentiellement, Windows essaie de détecter automatiquement si quelque chose est censé être un code ou des données, et si elle ressemble à des données (qui serait une ressource), il permettra d'éviter que données d'être exécutés en tant que code.

Cela devient un problème particulièrement collant si votre assembly .NET va être utilisé sur un réseau au lieu d'un lecteur local -. Il y a toutes sortes de configurations de sécurité .NET qui pourraient empêcher que cela fonctionne correctement

Une autre option, et ne pas connaître les détails de votre projet, prendre avec un grain de sel: ajouter un fichier .exe.readme à votre installation qui décrit à tous les utilisateurs curieux ou les informaticiens pourquoi il y a un fichier exécutable, ils n » étaient pas t attendre dans le répertoire d'installation:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top