CopyFile ohne Pfad zu wissen

aeQman

Grünschnabel
Hallo Leute,

ich würde gerne CopyFile benutzten, weiß aber den genauen Pfad der Datei, die ich kopieren will, nicht!
Ich weiß ihn deswegen nicht, weil ich eine Option.txt von einem Spiel auf den Desktop kopieren möchte und für dieses Spiel hat jeder einen anderen "Account" Namen.

Probiert habe ich es schon so, leider ohne Erfolg:

Code:
#include <windows.h>

using namespace std;

int main()
{
CopyFile("...\\Option.txt","Option.txt",false);
}

Die Datei soll also aus dem Spieleordner geholt werden und dann in das Verzeichnis (wo die CopyFile.exe drin ist) kopiert werden.

Weiß jemand rat?

Wäre sehr schön, danke im vorraus!

MfG aeQman
 
Mal langsam ....

CopyFile() ist doch nicht CopyFile.exe und wohin willst du nun kopieren? Dahin wo CopyFile.exe ist oder auf den Desktop?

Wenn du eine Datei die eine andere Anwendung schreibt kopieren willst, kannst du nie sicher sein, wo die Datei zu finden ist, der User könnte die Anwendung unter F:\irgendwas\meineGames\ installiert haben.
WENN die Anwendung die Datei unter Documents oder AppData ablegt, findest du den Ort mit

SHGetFolderPath()
 
Mal langsam ....

CopyFile() ist doch nicht CopyFile.exe und wohin willst du nun kopieren? Dahin wo CopyFile.exe ist oder auf den Desktop?

Wenn du eine Datei die eine andere Anwendung schreibt kopieren willst, kannst du nie sicher sein, wo die Datei zu finden ist, der User könnte die Anwendung unter F:\irgendwas\meineGames\ installiert haben.
WENN die Anwendung die Datei unter Documents oder AppData ablegt, findest du den Ort mit

SHGetFolderPath()

Sorry, war recht dumm von mir erklärt.

Also natürlich ist CopyFile() nicht CopyFile.exe.

Also, ich nenne das Programm einfach mal Beispiel.exe (das was CopyFile() beinhaltet).

Ich möchte das die Option.txt von dem Spiele-Ordner zu dem Ordner, wo die Beispiel.exe drin ist, hinkopiert wird.

Also:
Code:
CopyFile("Der Spiele Pfad,kA wie genau der ist\\Option.txt","Ordner von der Beispiel.exe\\Option.txt",false);
 
Den Pfad vom Spiel zu finden dürfte aufwendig werden.
Mal angenommen die Installation vom Spiel erlaubt dem User ein Verzeichnis zu wählen, müsstest du entweder die Registry oder sämtliche Laufwerke nach der .exe vom Spiel durchsuchen um den Pfad zu finden.

Mal angenommen das Spiel ist nicht ganz vorsintflutlich, dann sollte es seine Dateien unter AppData im Userordner ablegen, den findest du leicht, mit SHGetFolderPath()
Aber auch dann musst du immer noch rausfinden, welchen Namen der User dem Spieleordner bei der Installation gegeben hat.

Mal angenommen das Spiel ist doch vorsintflutlich oder der Programmierer nimmt es mit Schreibrechten nicht so genau, und das Spiel wurde im Verzeichnis C:\Programme installiert, dann findest du es unter XP genau dort, aber wie das Unterverzeichnis heisst wo das Spiel installiert ist, weisst du deshalb immer noch nicht.

Unter Vista wird das dann heftig.
Zuerst mal heisst auch der Ordner C:\Programme in Vista virtuell C:\Program Files
Ausserdem verschiebt Vista alle Dateien die eine Anwendung während der Laufzeit in irgendeinen Unterordner von C:\Program Files schreiben will, nach C:\Benutzer\Username\AppData\Local\VirtualStore\Program Files\Programmname\

Edit:
Als Zielordner brauchst du nichts angeben, vorausgesetzt du hast das WorkingDir deiner Anwendung richtig gesetzt, aber wenn das unter Vista in C:\Program Files liegt, findest du es später auch im VirtualStore
 
Zuletzt bearbeitet:
Danke für deine recht Informative Erklärung!! :)

Ich werde ersteinmal in der Registry gucken, ob ich da vllt. etwas finde!

Wie siehts denn aus, kann ich die .exe des Spiels vllt. "anzapfen", sodass ich alle Einstellungen, die .txt sind & von dem Spiel geladen werden, loggen kann bzw. in einer Beispiel.txt speichern kann?
 
Zuletzt bearbeitet:
Ob und wie man das WorkingDir einer laufenden Anwendung rausfinden kann weiss ich nicht, das muss dir wer anders beantworten, aber selbst WENN du das hin bekommst, dann weisst du immer noch nicht, ob das Programm seine Dateien im WorkingDir oder in AppData ablegt, und unter Vista kommt immer noch dazu, dass alles was unter Programm Files geschrieben wird im VirtualStore landet.

WENN das Spiel AppData nutzt, würde es dir reichen den AppData Ordner nach einem Verzeichnis mit dem Namen vom Spiel zu durchsuchen, das sollte in den allermeisten Fällen richtig sein.
 
Ob und wie man das WorkingDir einer laufenden Anwendung rausfinden kann weiss ich nicht, das muss dir wer anders beantworten, aber selbst WENN du das hin bekommst, dann weisst du immer noch nicht, ob das Programm seine Dateien im WorkingDir oder in AppData ablegt, und unter Vista kommt immer noch dazu, dass alles was unter Programm Files geschrieben wird im VirtualStore landet.

WENN das Spiel AppData nutzt, würde es dir reichen den AppData Ordner nach einem Verzeichnis mit dem Namen vom Spiel zu durchsuchen, das sollte in den allermeisten Fällen richtig sein.

Okay danke dir sehr!
 
Zurück