Results 1 to 5 of 5

Thread: File aanmaken vanuit exe, windows 8.1 (e.v.?)

  1. #1

    File aanmaken vanuit exe, windows 8.1 (e.v.?)

    Beste forum leden,


    Vanuit een met XE8 gemaakte .exe, (Myexe) wil ik een file laten (aan) maken in dezelfde dir als waar de .exe in zit.
    Met inno setup maak ik een setup.exe, Myexe komt netjes in de program files (zonder x86).
    Als Myexe wordt gestart (dubbel klikken op icoon), wordt eerst gekeken of er (al) een .ini file aanwezig is (in dezelfde dir), zo niet, dan moet deze worden gemaakt (en gevuld met wat ini data (ascii text)).
    Ik heb dat bij meerder app’s gedaan, ging altijd goed: zoeken naar de dir waar de software draait, (extractFileDir) file naam opgeven, TextFile openen, en indien niet aanwezig ReWrite filenaam met wat tekst (WriteLn(filenaam, tekst)).
    Bij Windows 8.1 gaat het niet meer, en komt de 103 file error.

    Het gaat wel als de gene die Myexe start, Admin rechten heeft, maar ja, dat geeft je niet aan elke gebruiker/account.
    Dus de vraag is: hoe kan ik een file laten aanmaken vanuit een exe (64 b) zonder dat de exe hoeft te worden gestart door een Admin?

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Sinds Vista mag je niet meer zonder rechten iets schrijven naar "c:\program files". Daar zijn andere regio's voor gemaakt (c:\prgramdata, Documenten, openbare documenten, eigen folder buiten de "program files"). Maak gebruik van de functie SHGetSpecialFolderLocation(Form1.Handle, CSIDL_PERSONAL, SpecialDir) (Alleen geschikt voor Windows).
    Met inno setup maak ik een setup.exe, Myexe komt netjes in de program files (zonder x86).
    Is je programma dan gecompileerd op 64 bits? Voor mij maakt het niet uit waar je je programma neerzet, maar Windows heeft een duidelijk scheiding gemaakt tussen 32- en 64 bits applicaties.
    Delphi is great. Lazarus is more powerfull

  3. #3
    @jkuiper
    Inderdaad op 64bit gecomp., plaatsing in program files gaat goed vanuit inno setup. Ik heb dat er voor de zekerheid bijgezet.
    Blijft de vraag dat als de exe wordt gestart door een admin, het wel werkt...
    Dus moet ik overwegen om te vermelden dat de gebruiker de exe dient te starten met "uitvoeren als admin"?

    Als ik de ini file(s) door inno setup laat mee-installeren werkt het trouwens wel goed, dat wil zeggen dat ook niet-admins de exe kunnen starten.

    Zou het wat zijn on de ini files in de dir "programData" op te bergen? Kan die dir wel worden benaderd vanuit de exe?
    Groet,
    Anton

  4. #4
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Waarom niet. Daar ben jij toch verantwoordelijk voor om die folder te zoeken.
    Delphi Code:
    1. uses shlobj;
    2.  
    3. function GetSpecialFolderPath(folder : integer) : string;
    4.  const
    5.    SHGFP_TYPE_CURRENT = 0;
    6.  var
    7.    path: array [0..MAX_PATH] of char;
    8.  begin
    9.    if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
    10.      Result := path
    11.    else
    12.      Result := '';
    13.  end;
    14.  
    15. //Het maken van een folder binnen c:\programdata is een vereiste.
    16. //Anders wordt je bestand readonly
    17. IniPath := GetSpecialFolderPath(CSIDL_COMMON_APPDATA) + '\MyExe\';
    Je programma opstarten als admin is niet nodig. Als je die functie gebruikt, ben je ook gezekerd als Windows ineen bepaalt dat c:\programdata ergens anders moet komen staan.

    Innosetup kan deze folder ook aanmaken.
    Delphi is great. Lazarus is more powerfull

  5. #5

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •