FIleCopy

TeCe

Erfahrenes Mitglied
Hallö...
Mal wieder ein kleines Einsteigerproblemchen meinerseits. Ich hab´ne kleine Konsolenanwendung, die sich selbst kopieren soll. Das ich mit kompletten Pfandangaben arbeiten sollte, ist mir klar - Also versuch ich es auch direkt auf dem besten Wege:
PHP:
//testEXE wird von main übergeben(argv[0])
int copyEXEFile(char* testEXE) {
	char Directory[MAX_PATH];
	DWORD Status = GetModuleFileName(testEXE, Directoy, MAX_PATH);
	if (CopyFile(Status, "C:\\test.exe", 1)) {
		printf("kopiert");
	} else {
		printf("Fehler beim kopieren");
	}
	return 0;
}

Jedoch bekomm ich die tolle Fehlermeldung, dass DWORD GetModuleFileName() nicht in LPCSTR konvertiert werden kann. Wie kann ich dennoch den, mit GetModuleFileName erkannten, Pfad an CopyFile übergeben?
 
moin


Es muss doch nciht unbedingt GetModuleFileName sein. Der komplette Pfad deiner Anwendung steht auch in den Parametern von Main!?


mfg
umbrasaxum
 
Negativ. Der Pfad der Anwendung steht nicht in argv[0], da steht nur die Anwendung selbst drin bzw. es kommt darauf an, wie die Anwendung gestartet wurde. GetModuleFileName() ist schon richtig...

Du hast nur die Parameter falsch angegeben. Der erste Parameter muß NULL sein (in Deinem Fall), der zweite ist ein String, in den der Anwendungspfad geschrieben wird, der dritte paßt so. ;)
 
moin

Code:
#include "stdafx.h"
#include <iostream.h>

int main(int argc, char* argv[])
{

	cout<<argv[0];
	return 0;
}

Ausgabe:

D:\Daten\Programmierung\Test\Debug\Test.exe


Was soll daran cniht funktionieren?!


mfg
umbrasaxum
 
Hab noch bis 10.00Uhr Morgens dran gesessen(Schule is endlich zuEnde) und deshalb bis gerade gepennt. Hab es auch mit der argv-Lösung gemacht :)

Aber ein nächstes Problem hat sich eingenistet.

Vielleicht erstmal zur Erleuterung, bevor ihr sonstwas von mir denkt.
Ich besuch ab nächsten Monat´ne recht gute Informatikschule, auf der alles über WirelessLAN läuft. Da dachte ich mir "schauste ma ob du´n kleines Programm in der art eines Trojaners schreibst, um deinen Bekannten zu ärgern(und wirklich nur diesen). Habe eine kleine client-server Anwendung zusammengebastelt - die auch schon so weit funktioniert :)
Jetzt kommt aber wieder ein kleines Stückchen, bei dem ich wieder nicht recht verstehe, warum es nicht will :-|

PHP:
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
Sollte doch eigentlich den Monitor abschalten, stattdessen kommt nur mit GetLastError() die Meldung "131 :: An attempt was made to move the file pointer before the beginning of the file. :: ERROR_NEGATIVE_SEEK"

Aber damit kann meine stümperhafte Wenigkeit wieder nicht all zu viel anfangen...
Wenn ich aber als lParam -1(an), 1(suspend) oder 2(soft-off) angebe hat er damit keine Probleme. Vielleicht wieder AdjustTokenPrivileges() ??? Aber wie???
 
Zurück