Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 01.09.2007, 17:03 Titel: Kopierproblem |
|
|
Ich möchte eine Datei in den Autostart von Windows kopieren lassen (Konsolenanwendung). Ich habe mir folgendes überlegt:
Code: | #include<iostream>
int main()
{
string s="copy \"test.txt\" \"%userprofile%\\startmen";
s+=129; // ASCII: 129="ü"
s+="\\autostart\""
system(s.c_str());
cin.get();
}
|
Das ganze klappt nur nicht so ganz: Das ganze bricht mit der Meldung
Zitat: | Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert. | ab.
Wenn ich dass \\autostart weglasse kopiert er angeblich, aber im startmenü-ordner finde ich nichts.
Noch etwas seltsames:
Wenn ich das ganze manuell in der cmd mache:
copy "test.txt" "%userprofile%\startmenü": klappt
copy "test.txt" "%userprofile%\startmenü\autostart": klappt nicht
es passiert folgendes: im ordner startmenü (nicht autostart!!!) erscheint die datei autostart
würde mich über hilfe freuen! |
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 01.09.2007, 19:21 Titel: |
|
|
Ich würde es dir nicht empfehlen, die Funktion system zu verwenden.
Statt dessen würde ich dir, wenn du schon unter Windows programmierst, CopyFile empfehlen.
CPP: | BOOL CopyFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
BOOL bFailIfExists
);
Parameters
lpExistingFileName
[in] Pointer to a null-terminated string that specifies the name of an existing file.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.
Windows Me/98/95: This string must not exceed MAX_PATH characters.
lpNewFileName
[in] Pointer to a null-terminated string that specifies the name of the new file.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.
Windows Me/98/95: This string must not exceed MAX_PATH characters.
bFailIfExists
[in] If this parameter is TRUE and the new file specified by lpNewFileName already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError. |
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 01.09.2007, 19:44 Titel: Re: Kopierproblem |
|
|
Robrunner hat Folgendes geschrieben: | Noch etwas seltsames:
Wenn ich das ganze manuell in der cmd mache:
copy "test.txt" "%userprofile%\startmenü": klappt
copy "test.txt" "%userprofile%\startmenü\autostart": klappt nicht
es passiert folgendes: im ordner startmenü (nicht autostart!!!) erscheint die datei autostart |
probier mal: copy "test.txt" "%userprofile%\startmenü\autostart\" _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 02.09.2007, 06:39 Titel: |
|
|
@FH
CopyFile funzt irgendwie auch nicht. Wahrscheinlich mache ich irgendwas mit den Parametern falsch ). Könntest du mir mal ein Beispiel geben?
@Asto
Nein jetzt kommt wieder:
Zitat: | Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert. |
|
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 02.09.2007, 10:58 Titel: |
|
|
aso ja, öhm bei mir ist der autostart ordner auch woanders
versuchs mal so: "%userprofile%\startmenü\programme\autostart\"
oder is der ordner wirklich bei dir im ordner startmenü? ^^ hmm _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 02.09.2007, 11:17 Titel: |
|
|
Äh..nein!! Hab tatsächlich Programme vergessen
So klappts in der cmd!
Aber mit CPP immer noch nicht; wieder dasselbe: Pfad nicht gefunden!
Ich glaube ja, es liegt am startmenü.
Gibts da noch eine andere Lösung als:
Code: | string s="copy \"test.txt\" \"%userprofile%\\startmen";
s+=129; //ASCII: 129="ü" |
|
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 02.09.2007, 12:11 Titel: |
|
|
Vergiss doch bitte den system-Aufruf und nimm CopyFile. So ein system-Aufruf kann auch ganz Böse enden, was dir mit CopyFile nicht passieren kann. _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 03.09.2007, 09:43 Titel: |
|
|
Zitat: | @FH
CopyFile funzt irgendwie auch nicht. Wahrscheinlich mache ich irgendwas mit den Parametern falsch ). Könntest du mir mal ein Beispiel geben? |
|
|
Nach oben |
|
|
Deviloper Junior JLI'ler
Anmeldedatum: 31.05.2006 Beiträge: 77
Medaillen: Keine
|
Verfasst am: 03.09.2007, 18:45 Titel: |
|
|
Willst uns veräppeln?
CPP: | if (CopyFile("C:\\test.txt", "%%userprofile%%\\startmenü\\programme\\autostart\\test.txt", TRUE) == FALSE)
MessageBox(NULL, "Die Datei existiert bereits und/oder konnte nicht kopiert werden!", "Fehler", MB_OK | MB_ICONERROR); | ...
Zuletzt bearbeitet von Deviloper am 04.09.2007, 12:46, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 04.09.2007, 11:15 Titel: |
|
|
Nein will ich nicht auch so klappt es nicht! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 04.09.2007, 14:56 Titel: |
|
|
Das AutoStart-Verzeichnis kann je nach WindowsVersion und Sprache an verschiedenen Stellen sein und / oder anders heissen.
Sicherer ist es, das richtige Verzeichnis in erfahrung zu bringen, bevor man irgendwas wild irgendwohin kopiert. |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 04.09.2007, 15:15 Titel: |
|
|
Okok, bei mir befindet es sich aber unter %userprofiles%\startmenü\programme\autostart und es würde mich nur interressieren wieso Code: | if (CopyFile("C:\\test.txt", "%%userprofile%%\\startmenü\\programme\\autostart\\test.txt", TRUE) == FALSE)
MessageBox(NULL, "Die Datei existiert bereits und/oder konnte nicht kopiert werden!", "Fehler", MB_OK | MB_ICONERROR); |
nicht funzt. |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 04.09.2007, 17:05 Titel: |
|
|
http://msdn2.microsoft.com/en-us/library/aa363851.aspx hat Folgendes geschrieben: | If the function fails, the return value is zero. To get extended error information, call GetLastError. |
_________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
|
Robrunner Mini JLI'ler
Alter: 32 Anmeldedatum: 08.07.2007 Beiträge: 44 Wohnort: Passau Medaillen: Keine
|
Verfasst am: 04.09.2007, 19:13 Titel: |
|
|
GetLastError() gibt bei mir den Wert 3 zurück.
Was heißt das jetzt? Hab in der MSDN nichts gefunden. |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
|
Nach oben |
|
|
|