Programm wird vom Betriebssystem verweigert
-
Hallo liebes Forum
Ich habe mir aus den FAQ den ShellExecute Code geholt!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39256.htmlLeider kommt bei mir immer die Fehlermeldung:
"Der Zugriff auf die Datei '" + AnsiString(FileName) + "' wurde vom Betriebssystem verweigert!";Also den hier: SE_ERR_ACCESSDENIED, SE_ERR_SHARE
Was kann ich tun?
-
Hallo
Wie die Fehlercodes schon sagen, wird dir der Zugriff verweigert weil die entsprechende Datei schon geöffnet ist, und zwar auf die Art das jeder weitere Zugriff verweigert wird. Das hat aber mit dem Builder nichts zu tun, der Code ist korrekt.
bis bald
akari
-
Der Code ist super!
Aber die Datei läuft noch nicht!
Ich hab angegeben
GetCurrentDir()+//"FMS.exe"
-
Timbo08 schrieb:
GetCurrentDir()+//"FMS.exe"
Hast Du fms.exe auskommentiert oder soll das der Verzeichnistrenner sein?
-
Verzeichnistrenner
Der schreibt mir ja auch als fehler den pfad mit dem Prog
-
Vielleicht solltest du mal die ganze Zeile angeben und welcher fehler denn genau kommt.
Ansonsten sollte das vielleicht eher so aussehen.GetCurrentDir() + "\\FMS.exe"
-
RunApplication(String(GetCurrentDir()+"\\FMS.exe").c_str(), 0);
Fehlermeldung:
"Der Zugriff auf die Datei 'C:\Programme\Borland\Projects\Updater\FMS.exe' wurde vom Betriebssystem verweigert!"
-
Hallo,
lässt es sich denn manuell starten? Nutzt du evtl. Vista und hast nicht die nötigen Rechte?
mfg, Micha
-
Ja manuell lässt es sich starten!
Also ich lasse es durch einen selbstgeschriebenen Updater runterladen und dann sóll es ausgeführt werden!
-
Hallo,
ist es denn möglich dass der Updater zu dem Zeitpunkt noch auf die Datei zugreift? Irgendeine nicht geschlossene Verbindung oder so?
mfg, Micha
-
Ja stimmt ich hab das disconnecten noch nich drin!
Liegts daran?
-
Hallo,
naja es kann schon sein dass der Prozess noch auf die Datei zugreift. Probier es doch einfach mal aus!
mfg, Micha
-
hmm ne klappt auch nicht!
Gleicher Fehler!
-
Hallo,
Hast Du auch das Standardverzeichniss (lpDirectory) angegeben ?
Ansonsten wäre der vollständige Aufruf sinnvoll...Nash
-
hä wie meinst du das?
Die Datei ist ja in dem angegebenen Ordner
-
Hallo,
nochmal zum grundlegenden Verständis... Du hast einen Updater der dir die Datei von irgendwo runterlädt? Dieser Updater führt direkt nach dem Runterladen die Anwendung aus? Oder hast du dafür eine seperate Anwendung?
Kann es sein dass die Datei einfach noch nicht bereit ist? Eventuell musst du nachdem der Download abgeschlossen ist noch kurz warten bevor die Datei ausgeführt werden kann?!
mfg, Micha
-
ok das probier ich mal aus!
-
Hallo,
Timbo08 schrieb:
hä wie meinst du das?
Die Datei ist ja in dem angegebenen OrdnerHINSTANCE ShellExecute ( HWND hwnd, // handle to parent window LPCTSTR lpOperation, // pointer to string that specifies operation to perform LPCTSTR lpFile, // pointer to filename or folder name string LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters LPCTSTR lpDirectory, // pointer to string that specifies default directory INT nShowCmd // whether file is shown when opened );
Der Parameter "lpDirectory" ist nicht gesetzt wenn ich das richtig sehe.
Evtl. ist es ja ein Versuch wert.Also ich benutze die Funktion immer ein wenig anders :
AnsiString Pfad = "C:\\Test\\Test.exe"; HINSTANCE erg = ShellExecute(Handle, 0, ExtractFileName(Pfad).c_str(), 0, ExtractFilePath(Pfad).c_str(), SW_NORMAL);
Wobei "lpParameters" bei Bedarf benutzt wird...
Nash