ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
541
541
EMPFEHLEN
-
19.01.11 19:20 #1
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?
-
Erwartet CopyFile nicht auch den Dateinamen der neuen Datei, nicht nur den Pfad?
-
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"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
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/libr...=vs.85%29.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üßeGeändert von Crash Kid (19.01.11 um 20:43 Uhr)
Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
Ähnliche Themen
-
in ein DB kopieren
Von beso im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 08.03.06, 13:33 -
DVD kopieren
Von Philipp_Frank im Forum Kino & FilmeAntworten: 3Letzter Beitrag: 02.01.06, 00:40 -
Aus PDF kopieren!
Von foxx21 im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 08.12.05, 11:01 -
Kopieren mit C++
Von Squeery im Forum Linux & UnixAntworten: 4Letzter Beitrag: 30.06.05, 09:36 -
CD-mp3-Kopieren
Von gix im Forum HardwareAntworten: 2Letzter Beitrag: 03.08.02, 16:49





Zitieren



Login






