Systemverzeichnis ermitteln
-
Ich weiß ja mit welcher Funktion man das SystemVerzeichnis ermittelt.
Aber weiß net ganz wie man die nutz alos die GetSystemDirectory();
-
Wenn du das Windows-Verzeichnis meinst, kannst du das über folgenden Code ermitteln:
#include <stdlib.h> ... char* ordner = getenv("windir");
-
ich meine das system verzeichnis da dies ja bei jedem Betriebssystem anders ist
-
http://msdn2.microsoft.com/en-us/library/ms724373.aspx
...da gibts sogar nen Beispiel.Remarks schrieb:
Applications should not create files in the system directory. If the user is running a shared version of the operating system, the application does not have write access to the system directory.
-
ich habe hier en Code damit sollte sich eigentlich die .exe ins System Verzeichnis kopieren weiß aber net warum des net geht wenn sich die exe öffnet kommt "Projekt1 hat ein Problem festgestellt und muss beendet werden"
Hier ma der Code:short Copy(); int main(int argc, char **argv) { char ProgName[100]; char* ordner = getenv("windir"); strcpy(ProgName, argv[0]); Copy(ProgName, "%s\\Kui.exe",ordner); //Kopiere erstelle system ("PAUSE"); } short Copy(char SRCFileName[], char DSTFileName[]) { FILE *SRC, *DST; char Buffer[1024]; short Counter = 0; short Status = 0; SRC = fopen(SRCFileName, "rb"); if(SRC) { DST = fopen(DSTFileName, "wb"); if(DST) { while(! feof(SRC)) { Counter = fread(Buffer, 1, 1024, SRC); if(Counter) fwrite(Buffer, 1, Counter, DST); } Status = 1; } } fclose(SRC); fclose(DST); return Status; }
-
strcpy(ProgName, argv[0]);...Vielleicht ist 'ProgName' zu klein für 'argv[0]' ?

1. Debugger, wo trifft der Fehler auf ?
2. Verwende:// ... TCHAR szProgName[MAX_PATH + 1]; StrCpyN(szProgName, argv[0], sizeof(szProgName) / sizeof(szProgName[0]));
-
dein typ geht net da kommt folgende fehlermeldung:
"undefined reference to `StrCpyN'"
-
Weiß keina weida??
-
siehe msdn ganz unten:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/shlwapi/string/strcpyn.asp...Eine Datei kannst du auch mit CopyFile() kopieren:
http://msdn2.microsoft.com/en-us/library/aa363851.aspx
-
kommt aber immer noch die fehlermeldung projekt1.exe musste gesclossen werden
-
Geh mal mit dem Debugger dran, damit sollte ja die Zeile in der er wegschmiert festzustellen sein

-
so system verzeichnis wird jetzt ermittelt aber is es keine kopie vorhanden
short Copy(); int main(int argc, char **argv) { char pfad[500]; char ProgName[100]; char abc[600] = "\\1.exe"; strcpy(ProgName, argv[0]); GetSystemDirectory(pfad, 500); strcat (pfad,abc); Copy(ProgName, "%s",pfad); printf ("%s\n",pfad); system ("PAUSE"); } short Copy(char SRCFileName[], char DSTFileName[]) { FILE *SRC, *DST; char Buffer[1024]; short Counter = 0; short Status = 0; SRC = fopen(SRCFileName, "rb"); if(SRC) { DST = fopen(DSTFileName, "wb"); if(DST) { while(! feof(SRC)) { Counter = fread(Buffer, 1, 1024, SRC); if(Counter) fwrite(Buffer, 1, Counter, DST); } Status = 1; } } fclose(SRC); fclose(DST); return Status; }
-
Überprüf mal was die Rückgabewerte sagen

"Applications should not create files in the system directory." <- Warum hast du das eigentl. vor?
"If the user is running a shared version of the operating system, the application does not have write access to the system directory." <- Wenn ich jetzt wüsste was ich unter "shared version" zu verstehen habe

-
habe es hingekriegt