CopyFile() - Klappt unter Windows Vista nicht?
-
Guten Abend,
wenn ich versuche mittels CopyFile() eine Datei zu kopieren erhalte ich als Rückgabewert immer 0.
Wenn ich es unter Windows XP probiere klappt es.
Auch wenn ich das Programm als Administrator starte erhalte ich immer noch 0.
Weiß jemand eine alternative für CopyFile() unter Vista?
Oder weiß jemand wie man das Problem behebt?Mfg
-
also in der MSDN steht nichts von Besonderhiten unter Vista,
also wird es auch nichts besonderes geben,
außer Evil M$ hätte hier grob fahrlässig gehandelt :pdafür steht in der MSDN über CopyFile
MSDN schrieb:
If the function fails, the return value is zero. To get extended error information, call GetLastError.
schmeiß den Wert, den dir GetLastError liefert einfach mal in FormatMessage
und lass dir die Fehlerbeschreibung per MessageBox ausgeben.vllt liegt es ja gar nicht an Vista, dass in deinem Fall CopyFile nicht funktioniert.
Schau dir erstmal den Fehler genau an
PS.:
Alternativen sind CopyFileEx und CopyFileTransacted...
oder du benutzt eben C++-Filestreams bzw. FILE* aus der C-Runtime und schreibst so eine eigene Kopier-Funktion,
wobei ich nicht glaube, dass letzteres nötig ist.
-
Error Code 5:
Access is denied.o.O
Des dürfte doch nicht kommen wenn ich das Programm als Admin starte.
-
hat evtl. ein anderes programm zugriff auf die datei?
-
Nein
Was auch komisch ist mit fopen etc. kann ich eine Datei mit gleichen Namen in das zu kopierende Verzeichnis schreiben.
Nur mit CopyFile gehts nicht.
-.-
-
lol, was für eine Datei willst du überhaupt kopieren?
und wohin?
-
Will mein Program von User\Eigene Dateien\Test\Test.exe zu User\Eigene Dateien\Test1.exe kopieren.
Wenn ich aber ne Datei in Eigene Dateien mi fopen etc. erstelle geht des...
-
Du kannst aber soweit ich weiß unter Windows nicht auf die exe des Programms, das gerade läuft, zugreifen.
-
WinVista schrieb:
Will mein Program von User\Eigene Dateien\Test\Test.exe zu User\Eigene Dateien\Test1.exe kopieren.
Wenn ich aber ne Datei in Eigene Dateien mi fopen etc. erstelle geht des...das ist nicht erlaubt. dafür musst du administrator sein
-
WinVista schrieb:
Auch wenn ich das Programm als Administrator starte erhalte ich immer noch 0.
aber ehrlich, ich weiß auch nich weiter

sry
-
Hm am besten Vista in der Systemsteuerung uninstallieren, dann hast du wieder Windows XP! weiss aber nicht ob das auch geht, wenn man die vollversion und nicht das update benutzt hat
-
lol, am besten unter Vista UAC deaktivieren, das is natürlich noch ne Möglichkeit, die man probieren müsste :p
damit umgeht man die ganzen Berechtigungsüberprüfungen.also gehst auf Systemsteuerung
-> Benutzerkonten
dann gibts da iwo "Benutzerkontensteuerung" oder so ähnlich, hab grad kein Vista laufen.auf jeden Fall ist da ein Haken drin, den machst du raus.
anch einem System Reboot hast du dann ein Vista mit dem Sicherheitsstand von XP
einfach mal probieren
PS:
hier gibts auch ne Erklärung zum ausschalten der UAC:
http://www.administrator.de/Windows_Vista_-_UAC_deaktivieren.htmlansonsten einfach gogolen, da kommen genug seiten

-
ist vieleicht dein programm, was die test.exe kopieren soll, die test.exe!?
-
@rT!f@Ct schrieb:
ist vieleicht dein programm, was die test.exe kopieren soll, die test.exe!?
nein die test.exe kopiert die test.exe selbst, das problem tritt auch auf wenn ich die datei test2.exe nenne
-
LOL...
ich schmeiß mich weg vor lachen...WinVista schrieb:
nein die test.exe kopiert die test.exe selbst
was bitte hab ich denn geschrieben.
@rT!f@Ct schrieb:
ist vieleicht dein programm, was die test.exe kopieren soll, die test.exe!?
dein programm kann sich nicht selbst kopieren, da den zugriff den du zum kopieren brauchst dein eigenes programm verhindet!!!
-
wie kann ich den zugriff für das programm bekommen? ich habe mit fopen die datei angelegt aber ich kann sie nicht ausführen. wenn ich das programm test2.exe nenne geht es auch nicht
-
HAAALLLLOOOOO...................
lies dir mal bitte in der MSDN durch, was zu fopen geschrieben steht.nur so viel schonmal vorweg. fopen erstellt dateien mit endungen wie du sie übergibst. (*.ico, *.bmp, *.dll, *.exe) das heist aber noch lange nicht, das die gerade erstellte datei auch das repräsentiert, was die dateiendung verspricht.
und du kannst meines wissens nach keinen zugriff auf dein programm bekommen, wenn es sich selbst kopieren soll.
-
Die letzten 2 Beiträge habe ich nicht geschrieben.
-.-ist vieleicht dein programm, was die test.exe kopieren soll, die test.exe!?
Ja
und du kannst meines wissens nach keinen zugriff auf dein programm bekommen, wenn es sich selbst kopieren soll.
Unter Windows XP kann ich sich ganz einfach mein Programm kopieren.
-
dann registrier dich einfach, dann kann keiner mit deinem Namen unfug treiben...
-
DrakoXP schrieb:
dann registrier dich einfach, dann kann keiner mit deinem Namen unfug treiben...
ach ist jetzt auch egal, hab auf dem Rechner wieder Win98 installiert, damit klappt es.
-
WinVista schrieb:
DrakoXP schrieb:
dann registrier dich einfach, dann kann keiner mit deinem Namen unfug treiben...
ach ist jetzt auch egal, hab auf dem Rechner wieder Win98 installiert, damit klappt es.
Habe ich nicht geschrieben.
Gibts es nicht irgendeine Methode die eigene Datei zu kopieren unter Vista?