jeatrexs
Goto Top

VB6 Ausgeführte Datei kopieren

Hallo Leute,

ich brauche dringend hilfe...

ich bin grade dabei ein Programm (VB6) zu schreiben, und hänge schon ne weile an dem Problem,
dass ich meine Exe des Programms kopieren möchte per Filesystemobject.

hier die Codezeilen:
        AutostartPath = C:\temp
        Call fs.CopyFile(App.path & "\" & App.EXEName & ".exe", AutostartPath, True)  

und das Problem ist die Fehlermeldung die ich immer erhalte:

Laufzeitfehler '70'
Zugriff verweigert.


Warum ist das so? Wenn eine Datei läuft funktioniert es im Windows wunderbar sie zu kopieren (im gegensatz zu verschieben). Warum funktioniert das dann in meinem Code nicht?

Ich hoffe Ihr könnt mir helfen

Content-ID: 113252

Url: https://administrator.de/contentid/113252

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

vbMaxi
vbMaxi 05.04.2009 um 11:49:31 Uhr
Goto Top
Hallo,
hast du Vista, XP oder irgendwas andres!? Wenn du Vista hast, dann starte die exe mal mit administrator rechten...

mfg vbMaxi
Biber
Biber 05.04.2009 um 12:12:53 Uhr
Goto Top
Moin jeaTreXs,

versuche mal,
  • bei der Wertzuweisung von AutostartPath den Pfad "c:\Temp" im Anführungszeichen zu setzen
  • und wenn dieser String als Destination der Methode FileCopy verwendet wird, einen Backslash anzuhängen.

        AutostartPath = "C:\temp"  
        fs.CopyFile(App.path & "\" & App.EXEName & ".exe", AutostartPath & "\", True)  

Grüße
Biber
jeaTreXs
jeaTreXs 05.04.2009 um 14:32:16 Uhr
Goto Top
@ vbMaxi:

ich verwende XP!
jeaTreXs
jeaTreXs 05.04.2009 um 14:32:42 Uhr
Goto Top
@Biber:

sorry, ich habe es falsch reingeschrieben. Ich habe es natürlich mit den Anführungszeichen gemacht...

weiß sonst jemand woran es liegen könnte?
Biber
Biber 05.04.2009 um 17:50:06 Uhr
Goto Top
Zitat von @jeaTreXs:
@Biber:

sorry, ich habe es falsch reingeschrieben. Ich habe es natürlich
mit den Anführungszeichen gemacht...
Und Du hast auch natürlich einen Backslash an den Autostartpath angefügt, hmm?

Tja dann, wenn alle anderen Möglichkeiten systematisch ausgeschlossen werden können, bleiben doch frei nach Arthur C. Doyle nur noch zwei verbleibende übrig, da die Meldung ja nun mal "Zugriff verweigert" heißt
  • entweder der App.Path beinhaltet zusätzliche Leerzeichen und erfordert weiter umschließende Anführungszeichen
  • oder Du hast Deine Quelldatei (exclusiv) geöffnet

Jede andere Erklärung würde mich überraschen.

Grüße
Biber
jeaTreXs
jeaTreXs 05.04.2009 um 20:37:21 Uhr
Goto Top
das mit dem fehlenden Backslash am Path kann eigentlich keine Schwierigkeiten verursachen, da ich beim Debuggen den wert ausgelesen hab und im Explorer geöffnet habe (ohne Probleme).

App.Path enthält keine leerzeichen.

Und was meinst du mit die Quelldatei exklusiv geöffnet?
Biber
Biber 06.04.2009 um 00:03:29 Uhr
Goto Top
Zitat von @jeaTreXs:
das mit dem fehlenden Backslash am Path kann eigentlich keine
Schwierigkeiten verursachen, da ich beim Debuggen den wert ausgelesen
hab und im Explorer geöffnet habe (ohne Probleme).
Moin jeaTreXs,

viele Menschen in meinem Alter müssen manche Fragen 3x stellen, weil sie die Antwort irgendwie nicht auf Anhieb verstehen - damit kann ich aber leben.
Ich hoffe, Du kannst mir diesen Altersstarrsinn nachsehen, denn ich frage jetzt noch mal
--> Mit einem Backslash funktioniert es auch nicht, ergab Dein Test??

App.Path enthält keine leerzeichen.
Okay, ist also gemäß deduktiver Methodik gestrichen.
Und was meinst du mit die Quelldatei exklusiv geöffnet?
Welches der drei Worte "Datei", "exklusiv" und "geöffnet" ist Dir denn das Erläuterungsbedürftigste?

Grüße
Biber
jeaTreXs
jeaTreXs 06.04.2009 um 22:35:31 Uhr
Goto Top
- Nein mit Backslash gehts nich

exklusiv ^^

Die Datei die ich kopieren möchte ist die, die die gerade läuft.

Das heißt das Programm, will sich selbst kopieren.

oder so:

ich möchte das kopieren:

App.Path & "\" & App.EXEName & ".exe"

vllt wirds damit deutlicher.

Gruß jeatrexs