Page 2 sur 2
Re: Lancer des commandes bat
Publié : lun. 19/déc./2016 0:21
par cage
Le code suivant doit être lancé avec les droits administrateur pour fonctionner.
Code : Tout sélectionner
sc config dhcp start= disabled
sc stop dhcp
sc config dnscache start= disabled
sc stop dnscache
sc config netman start= disabled
sc stop netman
Re: Lancer des commandes bat
Publié : mar. 20/déc./2016 22:26
par ChaudEf
merci beaucoup por l'aide
j'ai lance ce code (merci a mesa!!)
Code : Tout sélectionner
;trouvé ici http://purebasic.info/phpBB3ex/viewtopic.php?f=1&t=4449&p=84131&hilit=%23PB_Program_Write#p84131
Procedure.s OemToChar(String.s)
OemToChar_(@String, @String)
ProcedureReturn String
EndProcedure
prog = RunProgram("cmd.exe", "", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
;Delay(200)
If IsProgram(prog)
WriteProgramStringN(prog, "sc config dhcp start= disabled")
WriteProgramStringN(prog, "net stop dhcp /y")
WriteProgramStringN(prog, "sc config dnscache start= disabled")
WriteProgramStringN(prog, "net stop dnscache /y")
WriteProgramStringN(prog, "sc config netman start= disabled")
While ProgramRunning(prog)
If AvailableProgramOutput(prog)
x=0
Answer$=OemToChar(ReadProgramString(prog))
If Answer$
Debug Answer$
EndIf
EndIf
Delay(50) ; commentez cette ligne pour aller plus vite
Wend
EndIf
et rien ne se passe.
Re: Lancer des commandes bat
Publié : mer. 21/déc./2016 1:07
par cage
Bonjour ChaudEf,
Tu ne dois pas faire le test correctement.
J'ai pris le code et je l'ai copié dans un fichier cmd-bat.pb
Je l'ai ouvert dans PB
Dans le menu Compiler->Compiler Options...
J'ai coché la case:
Request Administrator mode for Windows Vista and above
J'ai compile le code dans cmd-bat.exe
Après avoir lancé ce fichier avec élévation des droits, les trois services sont arrêtés et désactivés.
J'ai vérifié l'état initial pour les remettre en état avec la commande:
Fichier bat de contrôle:
Code : Tout sélectionner
sc query type= service state= all > query.txt
:: Client DHCP (Automatique)
sc query dhcp
:: Client DNS (Automatique)
sc query dnscache
:: Conneions réseau (Manuel)
sc query netman
pause
Gérard
Re: Lancer des commandes bat
Publié : mer. 21/déc./2016 23:36
par ChaudEf
ca doit etre alors mon ordi qui fait des problemes, c'est extremement bizzarre, j'ai fait exactement comme ca et rien ne se passe!!!
Re: Lancer des commandes bat
Publié : jeu. 22/déc./2016 1:04
par cage
Peux-tu nous dire quel OS Windows tu utilises.
Re: Lancer des commandes bat
Publié : jeu. 22/déc./2016 8:33
par ChaudEf
Win 7 32 bit
Re: Lancer des commandes bat
Publié : jeu. 22/déc./2016 10:05
par Mesa
Tu peux utiliser PowerShell qui est présent par défaut de XP SP3 à Windows 10 (et même sur linux et macos si l'utilisateur l'a installé).
Voici ce que j'ai dans mes cartons, à toi de faire des essais et tiens nous au courant.
Code : Tout sélectionner
; Liste des fonctions PS: http://ss64.com/ps/
; voir https://blogs.technet.microsoft.com/josebda/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters/
; http://ss64.com/ps/syntax.html
Procedure.s GetPath_PowerShell()
Protected path$ = GetEnvironmentVariable("PATH"), ; List of all paths
PowerShell$ = "PowerShell not found!", ; Initialize with failure, success will change it
thispath$ = #Empty$, ; Temporary var to hold path for comparison
i.i ; Loop counter set to number of paths available
For i = 1 To CountString(path$, ";") + 1
thispath$ = StringField(path$, i, ";")
If FindString(thispath$, "powershell", 1, #PB_String_NoCase)
PowerShell$ = thispath$
Break
EndIf
Next
ProcedureReturn PowerShell$
EndProcedure
Debug GetPath_PowerShell() ; chemin de powershell. Attention: même si le chemin indique v1.0, la version de PS peut être 2 ou plus !
Procedure.s SendPS(Command.s)
OutCmd$ = ""
KeepOutCmd$ = ""
CmdPromptRun = RunProgram("powershell.exe", Command, "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide);
If CmdPromptRun
While ProgramRunning(CmdPromptRun)
OutCmd$=ReadProgramString(CmdPromptRun)
KeepOutCmd$ = KeepOutCmd$ + RTrim(OutCmd$) + #CR$
Wend
CloseProgram(CmdPromptRun)
EndIf
;ShowMemoryViewer(@KeepOutCmd$,1000)
ProcedureReturn KeepOutCmd$
EndProcedure
;Debug SendPS("Get-Host") ; info sur la console PS
Debug SendPS("get-host | Select version") ; Version de PowerShell, la version 2 ou plus est recquise (XP SP3 minimum)
;Debug SendPS("Get-WmiObject Win32_NetworkAdapterConfiguration -computername . | select DNSServerSearchOrder")
;Debug SendPS("Get-Service LAN* | % { $_.Name; SC.EXE SDSHOW $_.Name }")
;Debug SendPS("Get-Service LANMANSERVER | FL")
;Debug SendPS("get-service | where-object {$_.Status -eq 'Running'}");Display only services that are currently running:
Debug SendPS("get-service");Get all the services on the computer.:
;Attention, certains fonctions ont besoin d'être élevées (administrator), Voir ici http://ss64.com/ps/syntax-elevate.html
; il faut alors ajouter -verb RunAs
; Restart-Service: Stop And then restart a service
; Resume-Service: Resume a suspended service
; Set-Service: Change the start mode/properties of a service
; Start-Service sasv: Start a stopped service
; Stop-Service spsv: Stop a running service
; Suspend-Service: Suspend a running service
Debug SendPS("SC.EXE Query"); voir http://ss64.com/nt/sc.html et surtout https://blogs.technet.microsoft.com/josebda/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters/
M.
Re: Lancer des commandes bat
Publié : jeu. 22/déc./2016 12:41
par cage
Si ton PC dispose d'un antivirus, il se peut que se soit lui qui bloque les changements d’état des services.
J'utilise 360 Total Security et lorsque je lance l'exécutable cmd-bat.exe, j'ai un avertissement m'indiquant qu'un programme essaye de modifier le service concerné et je dois confirmer chaque changement d'état.
Ton antivirus fait peut-être la même chose mais en mode silencieux, ce qui fait que tu ne vois pas d'avertissement.