Nash a écrit :bon je continu avec mes problemes lol
le dossier "resources" , bien compliqué ca :
jai mis un exe dedans : mmm.exe
puis en lancant script :
My.Computer.FileSystem.WriteAllBytes(Application.StartupPath & "\mmm.exe", My.Resources.mmm, False)
j'obtiens erreur :
Erreur 1 'mmm' est un type dans 'Resources' et ne peut pas être utilisé en tant qu'expression. D:\AAAVB\NCTD2\NCTD\Form1.vb 115 88 NCTD
j'ai fais beaucoup de recherche et ca a l'air bien compliqué d'extraire un fichier du dossier "resources" de l'application ???
On ne copie pas une resource dans le dossier "resources" à la volée. Il y a une méthode particulière pour ajouter une resource au projet car je rappel que ce que tu vois au sein de ton EDI ne correspond pas du tout aux données qui sont manipulées par le developpeur. Le répertoire "Resources" est symbolisé de la sorte pour permettre une manipulation simplifiée mais c'est un conteneur de Bytes pas un vrai répertoire.
---> Comment ajouter une resource dans un projet DotNet ?
-Se rendre dans les propriétés de ton projet
-cliquer sur l'onglet "Ressources" du volet de gauche
-cliquer sur le splitButton "Ajouter une resource" en haut du volet central.
-cliquer sur l'item "Ajouter un fichier existant"
Ensuite pour ce qui est d'embarquer des outils c'est à toi de créer ton arborescence de travail lorque le projet s'exécute (évènement Load du formulaire principal). Création d'une arborescence de travail dans laquelle on extraits ResHacker.exe" et tes autres fichier (cpl par exemple).
Maintenant ce n'est qu'un conseil mais au lieu de devoir créer 50 fichiers .Bat il serait fort judicieux de créer une procédure qui accepte en argument le nom du fichier ".cpl" afin d'écrire en dur ton fichier Bat (étant donné que les fichiers .bat ne peuvent pas être extraits via les resources du projet. Ca donnerait ce type de snippet :
Code : Tout sélectionner
Public Sub CreateReplaceCPLBat(ByVal CplName As String)
'Déclaration variable
Dim CplNamePath As String = IO.Path.GetTempPath & "\" & CplName & ".bat"
'Création d'un flux d'écriture (StreamWriter) dans la variable portant le nom du fichier de destination
Using sw As StreamWriter = New StreamWriter(CplNamePath, False, Encoding.Default)
sw.WriteLine("@Echo off")
sw.WriteLine("takeown /f ""%windir%\system32\timedate.cpl""")
sw.WriteLine("icacls ""%windir%\system32\timedate.cpl"" /grant Administrateurs:f")
sw.WriteLine("DEL %windir%\system32\timedate.cpl.backup")
sw.WriteLine("rename %windir%\System32\timedate.cpl timedate.cpl.backup")
sw.WriteLine("copy ""sources\" & CplName & ".cpl"" ""%windir%\System32\""")
sw.WriteLine("rename ""%windir%\System32\" & CplName & ".cpl"" timedate.cpl")
sw.WriteLine("taskkill /f /im explorer.exe")
sw.WriteLine("start explorer.exe")
'Fermeture du flux d'écriture
sw.Close()
End Using
End Sub
A toi de trouver comment concaténer et manipuler les chaines de caractères pour obtenir une certaine partie.
Un indice :
- la classe "FileInfo" te sera utile pour les nom complet de fichier.
Voilà tout.