Shutdown.exe (Win XP x64) aus Programm aufrufen
Snafu
- programmiertechnik
Hallo!
Ich wollte schon öfters, dass mein PC in z.B. 3 Stunden von selbst herunterfährt, was ja mit der shutdown.exe eigentlich kein Problem ist.
Bei Windows XP x64 haben sie jedoch sinnvollerweise das Zeitlimit auf 10 Minuten (600 Sekunden) begrenzt. Wenn ich über geplante Tasks das Herunterfahren einrichte so funktionniert es leider nicht.
Ich hab mir also ein kleines C programm geschrieben, dass ca so aussieht:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(int argc, char * argv[])
{
int waitsec = atoi(argv[1]);
printf("system shutting down in %02d:%02d:%02d", waitsec/60/60, waitsec/60%60, waitsec%60); /* meldung ausgeben */
Sleep(waitsec); /* warte angegebene anzahl an sekunden */
system("shutdown.exe /s /t 1"); /* faehrt pc herunter, wartet 1 sec */
return 0;
}
Mein Problem ist jetzt, dass immer "shutdown.exe entweder falsch geschrieben oder nicht gefunden ..." ausgespuckt wird. Die Meldung kommt auch wenn ich den direkten Pfad angebe.
Weiß jemand warum das kommt? system() funktionniert, dir und echo gehen einwandfrei.
Fröhliche Weihnachten
Schritt 1: Betriebssystem wechseln zu Linux
Schritt 2: Terminal öffnen
Schritt 3: shutdown -P hh:mm <enter>
Nein im Ernst, ich glaube du bist im falschen Forum gelandet, tut mir leid ich kann dir da nicht weiterhelfen.
Aber vielleicht hast du ja noch Glück und es weiß doch jemand zufällig bescheid - viel Glück.
PS: Ich würds in nem Software-Forum probieren ;)
morgens,
Ich würds in nem Software-Forum probieren
In einem solchen Software-Forum befindest du dich bereits.
Grüße aus Berlin
Christoph S.
In einem solchen Software-Forum befindest du dich bereits.
Naja sehen wir und mal die Themenbereiche an:
deutet für mich eher auf Webdesign / -programmierung hin.
hallo,
Naja sehen wir und mal die Themenbereiche an:
deutet für mich eher auf Webdesign / -programmierung hin.
Richtig, das ist auch das "Generalthema" dieses Forums. Nur: wie willst du Webdesign realisieren, wenn du keine Software benutzen willst?
Und dann gibt es ja auch den hier schon völlig korrekt gewählten Bereich "Programmiertechnik". Wer sich da meldet, hat bisweilen ein Softwareproblem. Und wenn du dich mal ein wenig im Forumsarchiv umschaust, findest du, daß es so gut wie keine unbeantwprtete Anfrage zu einem "Software"-Thema gibt. Verlaß dich drauf: hier treiben sich gelegentlich auch ein paar excellente C/C++/C#-Programmierer herum, die solche Fragen wie im OP durchaus beantworten können.
Grüße aus Berlin
Christoph S.
Richtig, das ist auch das "Generalthema" dieses Forums. Nur: wie willst du Webdesign realisieren, wenn du keine Software benutzen willst?
Du sagtest aber, "das hier ist ein Software-Froum", aber das ist es nicht. Unter einem Software-Forum versteht man ein Forum, dass sich hauptsächlich mit Software beschäftigt, dieses Forum beschäftigt sich aber vor allem mit Webprogrammierung.
Und dann gibt es ja auch den hier schon völlig korrekt gewählten Bereich "Programmiertechnik". Wer sich da meldet, hat bisweilen ein Softwareproblem.
Nadann hätte ich mich lieber im "Software"-Bereich gemeldet und selbst der ist in diesem Forum wohl eher für Fragen bezüglich Software, die von Webdesignen / -programmierern verwendet wird, ausgerichtet.
Und wenn du dich mal ein wenig im Forumsarchiv umschaust, findest du, daß es so gut wie keine unbeantwprtete Anfrage zu einem "Software"-Thema gibt. Verlaß dich drauf: hier treiben sich gelegentlich auch ein paar excellente C/C++/C#-Programmierer herum, die solche Fragen wie im OP durchaus beantworten können.
Das bestreite ich auch garnicht, aber in einem, ich nenn es mal "echtem" Softwareforum, stößt man garantiert schneller auf Hilfe.
Und wie du siehst, hat noch niemand eien wertvollen Hinweis liefern können.
gudn tach!
ich glaube du bist im falschen Forum gelandet
ist er nicht. eine nicht allzu grosse positive anzahl an interessanten fragen, die nix mit webdesign zu tun haben, ist in diesem forum gerne gesehen und wird im schnitt genauso adaequat beantwortet wie der rest.
prost
seth
hallo,
Wenn ich über geplante Tasks das Herunterfahren einrichte so funktionniert es leider nicht.
Das ist wenig glaubhaft. Und es gibt auch unter Windows ein entsprechends Protokoll (unter Linux ein "log"). Zu erreichen über Verwaltung->Computerverwaltung->Ereignisanzeige. Was steht da drin?
system("shutdown.exe /s /t 1");
Mein Problem ist jetzt, dass immer "shutdown.exe entweder falsch geschrieben oder nicht gefunden ..." ausgespuckt wird. Die Meldung kommt auch wenn ich den direkten Pfad angebe.
Der "Pfad" ist tasächlich nicht ganz unwichtig. Was in deinem Progrämmchen sonst noch drinsteht bzw. von welchem Ort es aufgerufen wird (damit der "Pfad" stimmt), wäre zu überprüfen. Unter Linux hat man immer dann, wenn ein Pfad eventuell Problme macht, doe Möglichkeit, diesen Pfad eben von / ausgehend zu bestimmen. Viele wissen nicht, daß es auch unter Windows etwas Vergleichbares gibt. Es ist zwar nicht einfach bloß /, aber es gibt Systemvariablen wie "%SystemDrive%". Ich würde mit solchen Systemvariablen erstmal experimentieren.
Grüße aus Berlin
Christoph S.
Hallo!
Wenn ich über geplante Tasks das Herunterfahren einrichte so funktionniert es leider nicht.
Das ist wenig glaubhaft. Und es gibt auch unter Windows ein entsprechends Protokoll (unter Linux ein "log"). Zu erreichen über Verwaltung->Computerverwaltung->Ereignisanzeige. Was steht da drin?
Steht leider gar nichts drinnen. Bei keinem der, glaub es sind 5, verschiedenen Logs.
Der "Pfad" ist tasächlich nicht ganz unwichtig...
Siehe hier.
Hast du es mal ohne das ".exe" probiert?
Also so: system("shutdown.exe /s /t 1"); /* faehrt pc herunter, wartet 1 sec */
Übrigens, anstatt "/* Kommentar */" kannst du auch einfacher "// Kommentar" schreiben.
Hallo!
Übrigens, anstatt "/* Kommentar */" kannst du auch einfacher "// Kommentar" schreiben.
Hmm, dachte immer in C gehen die // Kommentare nicht. Egal.
Ohne .exe gehts auch nicht.
gudn tach!
Ich wollte schon öfters, dass mein PC in z.B. 3 Stunden von selbst herunterfährt, was ja mit der shutdown.exe eigentlich kein Problem ist.
Bei Windows XP x64 haben sie jedoch sinnvollerweise das Zeitlimit auf 10 Minuten (600 Sekunden) begrenzt.
ist das "sinnvollerweise" ironisch gemeint oder gibt's dafuer tatsaechlich einen sinnvollen hintergrund? frisst "shutdown" soviel cpu-zeit?
Wenn ich über geplante Tasks das Herunterfahren einrichte so funktionniert es leider nicht.
das ist zu ungenau. vielleicht hilft dir http://support.microsoft.com/?kbid=814761 weiter.
Ich hab mir also ein kleines C programm geschrieben, dass ca so aussieht:
int waitsec = atoi(argv[1]);
hier solltest du vorher abfangen, ob argv[1] auch wirklich existiert.
Sleep(waitsec); /* warte angegebene anzahl an sekunden */
"Sleep" frisst millisekunden, oder?
system("shutdown.exe /s /t 1"); /* faehrt pc herunter, wartet 1 sec */
hier solltest du den pfad angeben. und achte dann auf die directory seperators. dem cygwin-gcc genuegen z.b. slashes "c:/windows/system32/shutdown.exe -s -t 1"
prost
seth
Hallo!
ist das "sinnvollerweise" ironisch gemeint oder gibt's dafuer tatsaechlich einen sinnvollen hintergrund? frisst "shutdown" soviel cpu-zeit?
Das ist natürlich ironisch gemeint, keine Ahnung warum es jetzt max. 10Min sein dürfen (und warum die argumente mit '/' und nicht mit '-' angegeben werden).
Wenn ich über geplante Tasks das Herunterfahren einrichte so funktionniert es leider nicht.
Da hab ich leider einen Fehler gemacht, hab mich bei den geplanten Tasks verschrieben (shcutdown.exe o.0). Trotzdem ärgert es mich, dass es nicht aus einem Programm aufrufbar ist.
hier solltest du vorher abfangen, ob argv[1] auch wirklich existiert.
Hab ich ja eh, ich hab nur mal das wesentliche rausgeschrieben.
Sleep(waitsec); /* warte angegebene anzahl an sekunden */
"Sleep" frisst millisekunden, oder?
Jop, Schlampigkeitsfehler. Hab im Programm eh Sleep(waitsec*1000); stehen.
hier solltest du den pfad angeben. und achte dann auf die directory seperators. dem cygwin-gcc genuegen z.b. slashes "c:/windows/system32/shutdown.exe -s -t 1"
Habs mit
system("shutdown /s /t 1");
system("shutdown.exe /s /t 1");
system("C:\\WINDOWS\\system32\\shutdown.exe /s /t 1");
system("C:\WINDOWS\system32\shutdown.exe /s /t 1");
system("%windir%\\system32\\shutdown.exe /s /t 1");
probiert, immer selbe Fehlermeldung. In den "Logs" steht überhaupt nichts.
Nicht vergessen, ich hab XP x64, da beginnen die Schalter mit einem Slash, ich schreibs nicht immer falsch :D
gudn tach!
Da hab ich leider einen Fehler gemacht, hab mich bei den geplanten Tasks verschrieben (shcutdown.exe o.0). Trotzdem ärgert es mich, dass es nicht aus einem Programm aufrufbar ist.
d.h. ueber den taskmanager geht's?
hier solltest du den pfad angeben. und achte dann auf die directory seperators. dem cygwin-gcc genuegen z.b. slashes "c:/windows/system32/shutdown.exe -s -t 1"
Habs mit
system("shutdown /s /t 1");
system("shutdown.exe /s /t 1");
system("C:\WINDOWS\system32\shutdown.exe /s /t 1");
system("C:\WINDOWS\system32\shutdown.exe /s /t 1");
system("%windir%\system32\shutdown.exe /s /t 1");
> probiert, immer selbe Fehlermeldung. In den "Logs" steht überhaupt nichts.
welcher compiler?
> Nicht vergessen, ich hab XP x64, da beginnen die Schalter mit einem Slash, ich schreibs nicht immer falsch :D
ui, ui. warum macht MS sowas? bei xp pro wirden die parameter von shutdown in der hilfe mit "-" eingeleitet.
schon mal nach dem problem gegoogelt? evtl. gibt's in der registry ne moeglichkeit das 600er-limit aufzuheben.
prost
seth
Hallo!
d.h. ueber den taskmanager geht's?
Ja, mit Taskmanager (geplante Tasks) gehts doch, hab mich nur verschrieben. Aber in meinem Miniprogramm gehts immer noch nicht.
welcher compiler?
Borland C++ 5.5.1 for Win32 (Gibts für win 64?)
ui, ui. warum macht MS sowas? bei xp pro wirden die parameter von shutdown in der hilfe mit "-" eingeleitet.
Ich weiß, hab mich gewundert als ich das erste mal "shutdown.exe -s -t 7200" eingegeben habe und es nicht ging. Bin dann draufgekommen dass die Parameter nun mit '/' anfangen.
schon mal nach dem problem gegoogelt? evtl. gibt's in der registry ne moeglichkeit das 600er-limit aufzuheben.
Hmm... werd ich mal machen.
Hello,
d.h. ueber den taskmanager geht's?
Ja, mit Taskmanager (geplante Tasks) gehts doch, hab mich nur verschrieben. Aber in meinem Miniprogramm gehts immer noch nicht.
Unter welchem User wird das Script denn ausgeführt?
Hat dieser User denn das Recht, shutdown.exe auszuführen?
Harzliche Grüße aus dem
verschneiten Sankt Andreasberg
und Frohe Weihnachtszeit
Tom
Hallo!
Unter welchem User wird das Script denn ausgeführt?
Hat dieser User denn das Recht, shutdown.exe auszuführen?
Es wird unter meinem Benutzer (Administratorrechte. Ja, ich weiß ...) ausgeführt. Mit geplanten Taskts geht's nun aber doch, hab nur "shcutdown.exe" statt "schutdown.exe" geschrieben.
Wenn ich aber mein Miniprogramm ausführe sagt er mir aber, dass er den Befehl nicht kennt. Ich versteh nicht wieso.