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

CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 11 avril 2012 à 22:54 - Dernière réponse : CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention
- 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 

31 réponses

Répondre au sujet
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 25 avril 2012 à 23:35
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de CLeBeR_FR
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - Modifié par BunoCS le 2/10/2017 à 12:40
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 12 avril 2012 à 08:28
0
Utile
Correction erreur code

Annuler ça :

Kill ""C:\RestartReparMode.bat""

Remplacer par :

Kill "C:\RestartReparMode.bat"

Joe.
Commenter la réponse de ehjoe
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 14 avril 2012 à 23:53
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 15 avril 2012 à 12:34
0
Utile
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
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 15 avril 2012 à 13:20
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 15 avril 2012 à 14:20
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 15 avril 2012 à 14:21
0
Utile
Heu, remplacer

ReAgent

Par

ReAgentc
Commenter la réponse de ehjoe
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 17 avril 2012 à 13:28
0
Utile
Salut,
rien ne marche
A la place de paramètre j'ai mis
ReAgentc /boottore
Commenter la réponse de CLeBeR_FR
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 17 avril 2012 à 13:41
0
Utile
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
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 17 avril 2012 à 19:32
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 17 avril 2012 à 21:12
0
Utile
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
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 17 avril 2012 à 21:20
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 07:25
0
Utile
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
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 18 avril 2012 à 12:41
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 12:53
0
Utile
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
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 18 avril 2012 à 17:43
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 18:09
0
Utile
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
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 18 avril 2012 à 19:53
0
Utile
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.

Ligne de commande non fonctionnelle en VB.NET - page 2