Problem beim Kopieren von Dateien aus C:/Users/Benutzername/
-
Fake oder Echt schrieb:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762280(v=vs.85).aspx
Das bringt mich nicht wirklich weiter, ich möchte nur wissen wie man in der Copy Funktion den Usernamen rausbekommt.
CopyFile("C:/Users/Benutzer/Datei)", "I:/Privat#/Datei", false);
-
Schon mal mit den Windows Platzhaltern probiert ?
Benutzer = %USER%
-
Videonauth schrieb:
Schon mal mit den Windows Platzhaltern probiert ?
Benutzer = %USER%
Meinst du so???
CopyFile("C:/%USER%/Datei)", "I:/Privat#/Datei", false);
-
Drummer36 schrieb:
Meinst du so???
CopyFile("C:/%USER%/Datei)", "I:/Privat#/Datei", false);
Er meint das so:
CopyFile("C:/Users/%USER%/Datei)", "I:/Privat#/Datei", false);
-
komisch genau so habe ich das gemacht, aber er kopiert die Datei nicht.???
-
Eine Möglichkeit die ich sehe ist vorher einfach mal einen Filestream zu der Datei zu öffnen um zu sehen ob man überhaupt auf die Datei zugreifen kann, natürlich könnte man bei der gelegenheit die Datei auch direkt einlesen und einfach an der gewünschten Stelle neu schreiben. Ich vermute mal das hier mal wieder die UAC streiche spielt.
-
Dann wird das nicht funktionieren, hätte mich persönlich auch gewundert ..
Habe dir ja eine Funktion gepostet, die du verwenden kannst ..Falls dir das mit den Tokens und den Rechten zu komplex ist, kannste auch die hier nehmen: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724432(v=vs.85).aspx
und dann mit Hilfe von wsprintf die Teile zusammenfügen ..
-
Müsste es nicht eigtlich so aussehen:
CopyFile("C:\\Users\\%USER%\\Datei)", "I:\\Privat#\\Datei", false);
...oder bin ich da jetzt falsch gepolt?
-
Slashes muss man nicht escapen, man sollte generell aber lieber Backslashes nehmen, und ja die müssen dann widerum escaped werden ..
-
Also das kopieren funktioniert ja eigentlich, aber mit dem &USER& komm ich nicht klar.
Was kann ich denn machen, damit der User "egal" ist und trotzdem kopiert.
Die Microsoft Seite versteh ich nichtAch So : User Funktion hab ich schon
char user_name[255]; nSize = sizeof(user_name); GetUserName(user_name, &nSize);
-
TCHAR filename[MAX_PATH]; // Liefert z.B. c:\users\benutzername SHGetFolderPath(NULL,CSIDL_PROFILE,NULL,SHGFP_TYPE_CURRENT,filename); // \datei.dat dranhängen: lstrcat(filename,"\\datei.dat"); // Datei 'c:\users\benutzername\datei.dat' irgendwohin kopieren: CopyFile(filename,ziel);
Statt CSIDL_PROFILE gibt es noch andere Ordner:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx
...als Anwendung sollte man direkt in c:\users\benutzername eigentlich nichts ablegen, sondern eher CSIDL_APPDATA, CSIDL_LOCAL_APPDATA, etc. nehmen.