Aihe

JOS Delphi lakkaa toimimasta, koska windowsin yhteensopivuusavustaja rikkoo Delphi, näin korjaat !

Anonyymi

JOS Delphi32.exe:n (Tässä tapauksessa Delphi 7 / Delphi7) kanssa tulee ongelmia,
joiden aiheuttaja on
engl. "Program Compatibility Assistant" = suomeksi:
windowsin yhteensopivuusavustaja,
ongelman saa korjattua poistamalla allamainitut rekisteriavaimet:

Itse sain ongelman aikaiseksi sisällyttämällä projektin (*.dpr) nimeen sanan Setup.

Windowsissahan on tällainen automatiikka:

JOS ohjelman nimi sisältää merkkijonon "Setup" niin silloin käynnistyksen yhteydessä windows pyytää lupaa suorittaa ohjelma järjestelmänvalvojan oikeuksin (engl. administrator rights).

Tein Delphillä ohjelman, joka kirjoittaa USB -muistitikulle ".iso" -levykuvan,
ja tämähän edellyttää
1) oman luokan periyttämistä THandleStream -luokasta ja

2) CreateFile -kutsua , jolle parametriksi PChar(Filename), jossa Filename on:

Filename := '\\.\PHYSICALDRIVE' + IntToStr(DriveNumber);

Teknisesti USB -muistitikku rinnastuu kiintolevyyn, joten tuollainen ohjelma, joka kirjoittaa suoraan levyasemalle ohi tiedostojärjestelmän, ei toimi ilman järjestelmänvalvojan oikeuksia.

MUTTA:

Sanan Setup sisällyttäminen projektin (dpr) nimeen on virhe !

Se johtaa hulluun tilanteeseen: kun yrität debugata ohjelmaa Delphin integroidulla debuggerilla, niin Delphi32.exe (joka toimii normaalioikeuksin) yrittää debugata korotettua ohjelmaa (oma projektisi), ja tämä ei voi toimia, syynä Windowsin UIPI (User Interface - Provilege isolation).

Oikea tapa korjata tilanne on ITSE suorittaa myös Delphi UDE korotetuin oikeuksin.

JOS sallii tuon Windowsin "Program Compatibility Assistant":in korottaa Delphi32.exe, niin siitä seuraa vakavia ongelmia, ja mikä pahinta. kun tuo luo automaattisesti rekisteriavainmerkintöjä, niin edes Delphin lopetus ja uudelleenkäynnistys ja/tai koko windowsin uudelleenkäynnistys EI korjaa ongelmaa !

Tyypillinen ongelma on se että joko Delphi ei enää kykene kääntämään lähdekoodia EXEksi tai sitten Delphi ei kykene enää toimimaan debuggerina toiselle ohjelmalle.

HUOM:

JOS näitä (allaolevia rekisteriavaimia) ei löydy "HKEY_CURRENT_USER" alta, niistä on olemassa myös GLOBAALI versio, joka on muuten sama,
mutta ne löytyvät pääavaimen "HKEY_LOCAL_MACHINE" alta.

Eli alussa voi olla

JOKO: HKEY_CURRENT_USER
TAI: HKEY_LOCAL_MACHINE

muuten sama.

Eli yleensä HKEY_CURRENT_USER mutta voi olla myös HKEY_LOCAL_MACHINE.

Avaimen nimi:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Arvon (REG_SZ) nimi:
C:\ProgFile\Borland\Delphi7\Bin\delphi32.exe

Data:
ELEVATECREATEPROCESS

-----------------------------

Poista ylläoleva rekisteriavain (regedit.exe) niin ongelman korjautuu.

HUOM:

JOS päätät itse tehdä ohjelmia, jotka kirjoittavat levylle ohi tiedostojärjestelmän, niin suosittelen Windows WMI:n käyttöä, jolloin saat näkyviin kiintolevyasemien ja USB -muistitikkujen tekniset nimet, esim.

"Kingston DataTraveler 32 Gt"

tai

"Toshiba hard disk, 750 Gt"

... näin vältyt vahingossa ylikirjoittamasta kiintolevyä kun tarkoitus oli ylikirjoittaa USB -muistitikku. Teknologiahan on molemmissa sama.

7

73

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Olisikohan jo aika päivittää vähän uudemmaksi niin ei tulisi harmeja.

    • Anonyymi

      Tuli lukiessa sellainen tunne että olen joskus tapellut noiden luku-, kirjoitus- ja suoritusoikeuksien kanssa, kun olen yrittänyt saada Borland Database Engine (BDE) tietokantaajureita rekisteröidyksi johonkin kansioon, on vaan yksityiskohdat päässeet unohtumaan.

      • Anonyymi

        Vanhemmat Delphit (esim. juurikin Delphi 7) on tehty aikana, jolloin oletus oli se, että kaikki ohjelmat toimivat pääkäyttäjäoikeuksin.

        Niinpä esim. Delphi7:n delphi32.exe haluaa kirjoitella samaan hakemistoon, jossa ko. exe itse sijaitsee. Voi hyvin olla, että sama ongelma koskee myös BDE:tä.

        Nyky-windowseissa: JOS ohjelma asennetaan "Program Files" kansioon (tai mahdollisesti sen alikansioon) niin windows ei salli muiden kuin pääkäyttäjän kirjoitella ko. kansioon.

        Siksipä: JOS yrität asentaa Delphi7:n tuonne oletukseen eli Program Files, niin syntyy ongelma, kun Delphi yrittää kirjoittaa ko. kansioon, mutta se ei ole sallittua.

        Tuon ongelman kiertämiseen saattaa hakukoneella löytyä muitakin tapoja, mutta yksi tapa on se, että asentaa Delphin muualle kuin "Program Files" kansioon, niin kunhan käyttäjällä on kirjoitusoikeudet ko. kansioon, niin Delphi7 pitäisi saada toimimaan myös Windows 10:ssä.


      • Anonyymi
        Anonyymi kirjoitti:

        Vanhemmat Delphit (esim. juurikin Delphi 7) on tehty aikana, jolloin oletus oli se, että kaikki ohjelmat toimivat pääkäyttäjäoikeuksin.

        Niinpä esim. Delphi7:n delphi32.exe haluaa kirjoitella samaan hakemistoon, jossa ko. exe itse sijaitsee. Voi hyvin olla, että sama ongelma koskee myös BDE:tä.

        Nyky-windowseissa: JOS ohjelma asennetaan "Program Files" kansioon (tai mahdollisesti sen alikansioon) niin windows ei salli muiden kuin pääkäyttäjän kirjoitella ko. kansioon.

        Siksipä: JOS yrität asentaa Delphi7:n tuonne oletukseen eli Program Files, niin syntyy ongelma, kun Delphi yrittää kirjoittaa ko. kansioon, mutta se ei ole sallittua.

        Tuon ongelman kiertämiseen saattaa hakukoneella löytyä muitakin tapoja, mutta yksi tapa on se, että asentaa Delphin muualle kuin "Program Files" kansioon, niin kunhan käyttäjällä on kirjoitusoikeudet ko. kansioon, niin Delphi7 pitäisi saada toimimaan myös Windows 10:ssä.

        Muistelen että tuon lisäksi, noihin aikoihin tuli Windowsiin käyttöön nämä pitkät tiedostonimet ja polut joissa sai olla myös välilyöntejä.

        Delphi on ajoilta jolloin elettiin 8+3 merkin mittaisilla tiedoston nimillä, eikä siirtyminen sujunut ilman ongelmia.


      • Anonyymi
        Anonyymi kirjoitti:

        Vanhemmat Delphit (esim. juurikin Delphi 7) on tehty aikana, jolloin oletus oli se, että kaikki ohjelmat toimivat pääkäyttäjäoikeuksin.

        Niinpä esim. Delphi7:n delphi32.exe haluaa kirjoitella samaan hakemistoon, jossa ko. exe itse sijaitsee. Voi hyvin olla, että sama ongelma koskee myös BDE:tä.

        Nyky-windowseissa: JOS ohjelma asennetaan "Program Files" kansioon (tai mahdollisesti sen alikansioon) niin windows ei salli muiden kuin pääkäyttäjän kirjoitella ko. kansioon.

        Siksipä: JOS yrität asentaa Delphi7:n tuonne oletukseen eli Program Files, niin syntyy ongelma, kun Delphi yrittää kirjoittaa ko. kansioon, mutta se ei ole sallittua.

        Tuon ongelman kiertämiseen saattaa hakukoneella löytyä muitakin tapoja, mutta yksi tapa on se, että asentaa Delphin muualle kuin "Program Files" kansioon, niin kunhan käyttäjällä on kirjoitusoikeudet ko. kansioon, niin Delphi7 pitäisi saada toimimaan myös Windows 10:ssä.

        "Vanhemmat Delphit (esim. juurikin Delphi 7) on tehty aikana, jolloin oletus oli se, että kaikki ohjelmat toimivat pääkäyttäjäoikeuksin."

        Itseasiassa ei ollut noin.

        Windows XP aikainen ohjelma ja Windows XP:ssä oletus oli se, että ohjelmat tarvitsevat asennettaessa pääkäyttäjäoikeudet. Eli ohjelmat meni sinne "Program Files" -kansioon asumaan ja niille tehtiin pikakuvakkeet, mutta niiden käytön piti onnistua tavallisella käyttäjätilillä. Käyttäjätilejä tehtäessä tavallisilla käyttäjillä ei ollut niitä oikeuksia näpelöidä Program Files -kansiota.

        Siihen aikaan oli vaan todella paljon bugisia ohjelmia ja Microsoft sai niistä tarpeekseen Windows Vistassa, että teki UAC:n huutelemaan mahdollisimman ärsyttävästi, että sai ohjattua ohjelmat toimimaan kuten oli tarkoitettu.

        Käytännöt muuttui Windows 8:ssa uudestaan, että sovellukset menevät asumaan nyt käyttäjien omiin kotikansioihin, että asennettaessa ei tarvitse niitä pääkäyttäjän oikeuksia. Osa sovelluksista, vähän raskaammat sellaiset, on sitten siellä Program Filesissä, että saa saman asennuksen jaettua kaikille käyttäjille.

        Noiden Delphien kanssa tulee hauskaa kyllä kun Windows läppäreitä myydään kohta marketissa sikin sokin x86 sekä ARM arkkitehtuureilla. Ehkä tekevät jonkun emulaattorin sinne.


      • Anonyymi
        Anonyymi kirjoitti:

        Muistelen että tuon lisäksi, noihin aikoihin tuli Windowsiin käyttöön nämä pitkät tiedostonimet ja polut joissa sai olla myös välilyöntejä.

        Delphi on ajoilta jolloin elettiin 8+3 merkin mittaisilla tiedoston nimillä, eikä siirtyminen sujunut ilman ongelmia.

        Pitkät tiedostonimet tulivat Windows 95:ssa jo, ja silloin tuli myös se Program Files kansio.

        Delphi 7 tuli 7-vuotta myöhemmin ja nähtävästi ei edes ollut ihan ajanmukainen kun käyttäjätilit oli Windows NT vehkeissä olleet myös. Ohjelmat jotka eivät toimineet tavallisella käyttäjätilillä olivat yksinkertaisesti paskoja.


    • Anonyymi

      Delphi 7 - 2002...

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Riinan oudot selitykset

      Riina sanoo iltiksen haastattelussa että avioliiton ongelmat johtuvat siitä ettei häntä katsottu tai hänestä kiinnostuttu kun liikkuivat Kallen kanssa
      Kotimaiset julkkisjuorut
      103
      9389
    2. Mikäs emäntä se joka listi lapset ja itsensä?

      Oli muhokselta,ouluun saakka piti mennä toteuttamaan tuokin asia. Onneksi ei silti rekan alle ajanut. Ei nimiä, toki ne tulee minfoon. Mutta niillä ei
      Muhos
      177
      9121
    3. Halla-aho: Emme halua, että punavihreä hallitus jatkaa

      https://www.is.fi/politiikka/art-2000007761119.html Alkaa olla nykyhallituksella lopun ajat.
      Maailman menoa
      525
      6169
    4. Elina Lepomäen vetäytyminen kova isku

      "Petteri Orpon joukkueen epäonni jatkuu – Elina Lepomäen vetäytyminen kova isku". https://www.uusisuomi.fi/uutiset/us/0c6c716d-c8eb-4c01-aaf7-3626832
      Maailman menoa
      62
      2869