programmer un reboot automatique de Windows [tout langage] - Programmation
Marsh Posté le 22-11-2001 à 19:00:00
ExitWindows
[edtdd]--Message édité par TheJackal--[/edtdd]
Marsh Posté le 22-11-2001 à 19:08:33
bah un truc simple en c++ (tres bourrin):
#include <time.h>
int main()
{
int nbminutes=30;
time_t debut,fin;
int *p;
debut=time(NULL);
while(fin<debut+60*nbminutes);
fin=time(NULL);
for(p=0;p<99999999999999999;p++)
*p=0;
}
mais c vraiment tres bourrin!!
Marsh Posté le 22-11-2001 à 19:30:59
non seulement ton truc ça compile pas tel quel, mais en plus ça reboote pas le PC, ça plante le programme avec un truc du genre "Access Violation"
(les PCs actuels ne tournent plus sous DOS 5 pour info )
Marsh Posté le 22-11-2001 à 19:43:20
antp a écrit a écrit : non seulement ton truc ça compile pas tel quel, mais en plus ça reboote pas le PC, ça plante le programme avec un truc du genre "Access Violation" (les PCs actuels ne tournent plus sous DOS 5 pour info ) |
ben quoi on peut plus faire des saloperies genre jmp fff0:.... ? on m'aurait menti ?
Marsh Posté le 22-11-2001 à 19:44:11
Sous 98 ya une chance...
Marsh Posté le 22-11-2001 à 19:48:34
Ouai ecoute tu fous un timer ou un thread que tu fais gentillement s'endormir et tu appeles ExitWindows, ca a rien de terrifique
Marsh Posté le 23-11-2001 à 03:55:24
Salut,
Un Sleep(...) peut l'argement suffire et n'occupe pas le proc pour rien.
Par contre éteindre ou redémarrer l'ordinateur sous Win2K, c'est autre chose. Voici une vielle routine (sous VC++ 6.0) qui permet de faire cela sur n'importe quel Win (jamais testé sous XP).
A+
------------------------
#include "stdafx.h"
// WinXExitWindowsEx adaptée d'un exemple de David Gerhart (voir ExitWindowsEx)
int WinXExitWindowsEx(UINT uFlags)
{
int ret;
OSVERSIONINFO ver;
ret=0;
ver.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if (!GetVersionEx(&ver))
ret=GetLastError();
else
{
if (ver.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) // Win 95/98
{
if (!ExitWindowsEx(uFlags,0))
ret=GetLastError();
}
else if (ver.dwPlatformId==VER_PLATFORM_WIN32_NT) // Win NT/2K
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Avant d'utiliser ExitWindowsEx, il faut avoir le privilège SE_SHUTDOWN_NAME
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken))
ret=GetLastError();
else
{
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
if (GetLastError() != ERROR_SUCCESS)
ret=GetLastError();
else
{
if (!ExitWindowsEx(uFlags,0))
ret=GetLastError();
}
}
}
else
ret=-1;
}
return(ret);
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
Sleep(1000*60*30); // attente de 30mn (en ms) sans utiliser de temps processeur
WinXExitWindowsEx(EWX_REBOOT); // reboot
return 0;
}
Marsh Posté le 23-11-2001 à 06:48:58
merci beaucoup ! je teste ça en grande réelle et je vous tiens au courant !
Mogi.
Marsh Posté le 23-11-2001 à 07:49:32
Autre solution:
windows étant un OS autodemerdant, tu le laisse faire, il finira bien par se crasher tout seul
Ou alors tu installes IIS et tu le mets sur le reseau. Tu va voir, ta machine va rebooter toute seul de temps en temps.
mouarf
Marsh Posté le 23-11-2001 à 18:05:56
merci tfj57 pour son magnifique pgm qui fonctionne très bien... 'puis c moins couteux que d'acheter iis
Mogi.
Marsh Posté le 24-11-2001 à 16:11:01
mogi a écrit a écrit : merci tfj57 pour son magnifique pgm qui fonctionne très bien... 'puis c moins couteux que d'acheter iis Mogi. |
Ok, apparemment ça fonctionne bien.
Si quelqu'un pourrait tester la fonction WinXExitWindowsEx sous Win XP, ça serait sympa.
SoWhatIn22 a écrit a écrit : Autre solution: windows étant un OS autodemerdant, tu le laisse faire, il finira bien par se crasher tout seul Ou alors tu installes IIS et tu le mets sur le reseau. Tu va voir, ta machine va rebooter toute seul de temps en temps. mouarf |
Heu, il a dit qu'il veut rebooter toutes les 1/2 heures, pas toutes les 2 minutes
[edtdd]--Message édité par tfj57--[/edtdd]
Marsh Posté le 22-11-2001 à 18:58:19
hello,
j'aimerai lancer un programme au démarrage de windows qui effectue un reboot automatique de windows après 1/2 heure de fonctionnement. kkun a-t-il une idée ?
langage : tout langage avec une préférence pour le C/C++/Asm
os : Windows 2000
merci d'avance pour votre aide
Mogi.