Kopieren

FSA

Erfahrenes Mitglied
ich habe schon alles versucht womit ich eine .exe kopieren kann aber es geht nett
ich habe alles probiert was da steht:

MoveFile
CopyFile


das ist mein code:

char str[MAX_PATH]; //ermittelt pfad von meiner exe
GetModuleFileNameA(NULL,str,MAX_PATH);

string getp;

getp = str;
getp.erase(2,18); //Löscht so viel das nur noch laufwerkbuchstabe da ist bsp A:

getp += "\\Crash Insatll.exe"; //fügt zusammen bsp: A:\\Crash Install.exe

LPCSTR getpl = getp.c_str(); wandelt getp (std::string) in getpl (LPCSTR) um

cout<<getpl;



CopyFile(getpl,"C:\\",true); //Kopiert


alles funktioniert doch die datei ist anschließend nicht an seinem platz sie wurde nicht kopiert

ich habe ja auch mit cout den pfad ausgegeben er war richtig und hatte im code überall 2x \\
hab auch schon das programm mit admin rechte ausgeführt wieder nichts

OS:Windows Vista Home
MSVC++
Was mach ich falsch?
 
alles funktioniert doch die datei ist anschließend nicht an seinem platz sie wurde nicht kopiert
Woher willst du das wissen - hast du den Rückgabewert von "CopyFile()" geprüft? Falls der FALSE ist, kannst du mit "GetLastError()" den aufgetretenen Fehler abfragen.

Ansonsten - wie sheel schon sagte - benötigst du einen vollständigen Pfadnamen (inkl. Datei) für Quelle und Ziel.

Gruß
MCoder
 
Man benötigt für CopyFile() den vollständigen Pfad mit Dateiname und Endung, wo die Datei momentan ist UND den kompletten Pfad mit Dateiname und Endung wo sie hin soll. Man kann damit die Datei auch gleich umbenennen.
Beispiel: CopyFile("C:\\test.exe", "C:\\Neuer Ordner\\umbenannt.exe", FALSE);

Aber mal ein Blick in die MSDN hätte deine Frage auch beantwortet.
http://msdn.microsoft.com/en-us/library/aa363851(v=vs.85).aspx

Wenn du die eigene exe Datei wo anders hin kopieren willst und nicht weißt wo sie momentan liegt, reicht es auch wenn du nur den Dateinamen angibst. Dann sucht die Funktion nach dem Dateinamen im selben Ordner wo die exe grade liegt, die ausgeführt wurde.

Was mir nur nicht ganz klar ist, warum du den Pfad in LPCSTR umwandelst. Du kannst doch auch gleich den String reinschreiben. Musst halt die string-Funktion ".c_str()" noch dahinter hängen. Aber dann kannst du dir das ganze umwandeln sparen. Genauso dass du erst den Pfad deiner exe-Datei ermittelst und dann alles löschst bis auf den Laufwerksbuchstaben. Um dann wieder den Dateinamen hinzuzufügen. Is mir irgendwie nicht ganz klar...

grüße
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück