Das ist so keine Gute Idee. Weil sich dann der User vom UAC genervt füllt.
Ein Setup (am bestem mit einem vernünftigen Tool (InnoSetup, NIS o. ä.)
sollte alles erledigen. Für die nicht so Setupfreudigen, tuts ein ZipArchiv, in
dem dann alle notwendigen Unterordner enthalten sind.
Soweit haste es ja schon fast. Das Programm selber, sollte nach einem Start
niemals versuchen irgendetwas in den Programmordner zu schreiben, dazu
gehört natürlich auch Ordner anlegen usw. Alle Einstellungsdateien gehören
in ein unterverzeichnis von (%APPDATA%, #CSIDL_APPDATA,
#CSIDL_LOCAL_APPDATA) für Usereinstellungen.
#CSIDL_COMMON_APPDATA für globale Programmeinstellungen.
Dort ist jeweils eine Ordnerstrukture anzulegen: %APPDATA%\...Hersteller...\...Programm..\*.*
Mit dem Programm erstellte Dateien (Bilder, Texte usw.) gehören dann nach
#CSIDL_PERSONAL, bzw. einem dort angelegtem Unterordner.
Die Ordner ermitteln geht mit:
Code: Alles auswählen
Procedure.s GetSpecialFolder(CSIDL.l)
Protected *itemid.ITEMIDLIST
Protected location.s = Space(#MAX_PATH)
If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
If SHGetPathFromIDList_(*itemid, @location)
CoTaskMemFree_(*itemid)
If Right(location, 1) <> "\" : location + "\" : EndIf
ProcedureReturn location
EndIf
EndIf
EndProcedure
Wenn Du Dich daran hälst, sollte es auf jedem System problemlos laufen,
es sei denn das Programm selber ist fehlerhaft
