Ligne de commande non fonctionnelle en VB.NET [Résolu]

Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
- - Dernière réponse : CLeBeR_FR
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
- 25 avril 2012 à 23:35
Bonjour,
je voudrais faire en sorte que le PC de l'utilisateur de mon logiciel redémarre tout seul une fois en mode PE Windows ( en mode réparation ) j'ai donc créer un .bat que mon logiciel lance, sauf que si je le lance manuellement mon PC redémarre en PE comme voulu, mais si je le lance à partir de mon soft ça ne fonctionne pas, reagentc.exe est introuvable.
Voici mon code d'appel :

Dim CreationRestartRepairMode As New StreamWriter("C:\RestartReparMode.bat")
                CreationRestartRepairMode.WriteLine("@echo off")
                CreationRestartRepairMode.WriteLine("reagentc /boottore")
                CreationRestartRepairMode.WriteLine("shutdown /r")
                CreationRestartRepairMode.Close()
                System.Diagnostics.Process.Start("C:\RestartReparMode.bat")

Merci de votre aide
Afficher la suite 

Votre réponse

20/31 réponses

Meilleure réponse
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
3
Merci
Sujet résolu ! :) Il fallait déboguer le programme en mode "Any CPU" pour ce faire :

Dans visual Studio, ouvrir votre projet visual studio --> Propriétés --> Compiler --> Option avancé de compilation --> Unité central cible --> "Any CPU"

Merci de votre aide !

Merci CLeBeR_FR 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de CLeBeR_FR
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Bonjour,

Microsoft dit que c'est seulement pour Windows7, est-ce ton cas ? Car sinon, pas exemple sous Vista, ça ne fait que redémarrer (j'ai testé).

http://technet.microsoft.com/fr-fr/library/dd799242(v=ws.10).aspx

Qui te dit qu'il y a un exe nommé "reagentc.exe" ?
Il me semble (sous réserve) que ce n'est ps un exe mais une commande du noyau système...

Déjà, est-ce que tu retrouves ton bat et ce qu'il faut dedans à l'endroit pévu, si tu sors avant de le lancer et vas voir manuellement ?

Nota bene : il peut être bon ensuite de ne pas le laisser ce Bat, à supprimer en fermeture de logiciel...

Tente ceci et dis...

Sub lance()
 Dim p As New StreamWriter("C:\RestartReparMode.bat")
 p.WriteLine("@echo off")
 p.WriteLine("reagentc /boottore")
 p.WriteLine("shutdown /r")
 p.Close()
 Try
  Process.Start("C:\RestartReparMode.bat")
  Catch ex As Exception
   MsgBox("Logiciel introuvable ", vbExclamation, 
My.Application.Info.ProductName)
 End Try
 System.Threading.Thread.Sleep(500)
 My.Application.DoEvents()
 Kill ""C:\RestartReparMode.bat""
 System.Threading.Thread.Sleep(500)
 End
End Sub


Cordialement, Joe.
Commenter la réponse de ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Correction erreur code

Annuler ça :

Kill ""C:\RestartReparMode.bat""

Remplacer par :

Kill "C:\RestartReparMode.bat"

Joe.
Commenter la réponse de ehjoe
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Salut Joe,
ta technique de marche pas, toujours la même erreur. ( J'ai mis après le shutdown un "pause" pour voir l'erreur )
Commenter la réponse de CLeBeR_FR
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Ah... suite...

Ah, a contrario de ce qu'il me semblait avoir lu, il apparaîtrait que ce soit bien un "exe"!

Faire une recherche depuis C sur cet exe avec l'explorateur, et à défaut :

Il faut en trouver un (si possible depuis les sources Microsoft) et le mettre avec ton bat, déjà pour voir...

Mais... la question relève aussi d'un forum "Windows x", car c'est un problème de commande...

Cordialement, Joe.
Commenter la réponse de ehjoe
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Je ne pense pas que sa soit un problème de commande car si je lance manuellement le .bat ça marche
Commenter la réponse de CLeBeR_FR
Commenter la réponse de CLeBeR_FR
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Et si tu fais ça déjà, ça donne quoi ?

' METTRE LA BONNE ADRESSE
Try
  Process.Start("C:\ReAgent.exe")
  Catch ex As Exception
   MsgBox("Echec ", vbExclamation, 
My.Application.Info.ProductName)
End Try
'
' ----- ET -----
'
Try
  Process.Start("C:\ReAgent.exe", "paramètres")
  Catch ex As Exception
   MsgBox("Echec ", vbExclamation, 
My.Application.Info.ProductName)
End Try


Ça donne quoi en te passant du BAT ?

Cordialement, Joe.
Commenter la réponse de ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Heu, remplacer

ReAgent

Par

ReAgentc
Commenter la réponse de ehjoe
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Salut,
rien ne marche
A la place de paramètre j'ai mis
ReAgentc /boottore
Commenter la réponse de CLeBeR_FR
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Nouveau jour,

Je crois qu'il faut seulement mettre le paramètre :

Try
  Process.Start("C:\ReAgentc.exe", "boottore")
  ' OU ???
  Process.Start("C:\ReAgentc.exe", boottore)
  Catch ex As Exception
   MsgBox("Echec ", vbExclamation, 
My.Application.Info.ProductName)
End Try


Mais tu n'as même pas dit ce que ça fait quand tu écris :

Try
Process.Start("C:\ReAgentc.exe")
Catch ex As Exception
MsgBox("Echec ", vbExclamation,
My.Application.Info.ProductName)
End Try

Cordialement, Joe.
Commenter la réponse de ehjoe
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Salut,
lorsque je fais :

Try
            Process.Start("C:\Windows\System32\ReAgentc.exe", "/boottore")
            ' OU ???
        Catch ex As Exception
            MsgBox("Echec ", vbExclamation,
         My.Application.Info.ProductName)
        End Try


Résultat : Reagentc introuvable...
et lorsque je fais :
        Try
            Process.Start("C:\Windows\System32\ReAgentc.exe")
        Catch ex As Exception
            MsgBox("Echec ", vbExclamation,
            My.Application.Info.ProductName)
        End Try


Ligne de commande erronée
Commenter la réponse de CLeBeR_FR
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Suite...

Tente l'argument sans le slash, faut faire des essais divers...

Alors je ne sais pas, vois l'aide à propos de la commande "process.start" car a priori on doit avoir une documentation, aussi bien sur l'exe et ses paramètres que sur process.start, il doit sans doute y avoir une solution, mais je ne peut pas tester car j'ai Vista aui semblerait ne pas répondre de la même façon...

Cordialement, Joe.
Commenter la réponse de ehjoe
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Re,
quand j'ouvre cmd.exe manuellement et que je fais Dim RedémarragePE As New Process
reagentc /boottore >NUL

Seulement, lorsque je rentre le code suivant dans mon bouton, et bien la cmd.exe se lance mais la commande ne s'écrit pas et ne s’exécute pas. ( alors qu'avec une autre commande et je crois que j'ai trouvé la raison pour laquelle sa ne fonctionne pas.

        Dim RedémarragePE As New Process
        With RedémarragePE.StartInfo
            .FileName = "cmd.exe"
            .Arguments = "reagentc /boottore >NUL"
        End With
        RedémarragePE.Start()


Voici la raison pourquoi je pense que sa ne marche pas :


Source : http://technet.microsoft.com/fr-fr/library/dd799242%28v=ws.10%29.aspx

J’interprète le "En ligne uniquement" comme "Doit être tapé manuellement par l'utilisateur.
Je vais aller sur les forums du MSDN et demander.
Commenter la réponse de CLeBeR_FR
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
1) Ne serait-ce pas tout simplement une question de permissions ?
Lorsque tout marche, depuis la ligne de commande, en quel mode es-tu ?
Normal ? ou en tant qu'administrateur ?

2) as-tu essayé avec Shell directement (au lieu de Procces.start) ? Et en lançant ton appli en tant qu'administrateur ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Salut ucfoutu
1) Je lance ma cmd en "normale"
2)Oui j'ai essayé
shell("c:\monfichier.bat")
et en lançant le programme en mode administrateur mais ça ne marche pas.
Commenter la réponse de CLeBeR_FR
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Non ! pas ainsi !
Tu disais plus haut que lorsque lancé en ligne de commande, cela marchait.
Bien
1) Qu'y écrivais-tu exactement ?
C'est cela même que tu devrais tenter avec Shell.
2) j'insiste à propos du mode d'exécution (en tant qu'administrateur ou non ?)




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
301
Date d'inscription
mercredi 22 septembre 2010
Dernière intervention
27 février 2018
0
Merci
Non je lançais normalement j'écrivais ceci --> reagentc /boottore >NUL
Peux tu m'expliquer comment tu veux que je l'utilise le shell car je ne vois pas.
Merci
Commenter la réponse de CLeBeR_FR
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Où exactement écrivais-tu ceci
reagentc /boottore >NUL
Dans MSDOS ?
ou
Dans la ligne de commande de Windows (démarrer >>> exécuter) ?
car pas exactement pareil !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Code adapté windows 32 et >

Public Class Form1
  Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
  ByVal Handle As Int32, _
  ByVal lpOperation As String, _
  ByVal lpFile As String, _
  ByVal lpParameters As String, _
  ByVal lpDirectory As String, _
  ByVal nShowCmd As Int32) As Int32

  Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim r As Int32
    r = ShellExecute(0, "open", "http://www.microsoft.com", 0, 0, 1)
  End Sub
End Class


Paramètre :

r = ShellExecute(0, "open", "http://www.microsoft.com", 0
, 0, 1)
Commenter la réponse de ehjoe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.