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.
JOS Delphi lakkaa toimimasta, koska windowsin yhteensopivuusavustaja rikkoo Delphi, näin korjaat !
17
660
Vastaukset
- 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
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.Toimiiks mun visual basic win kympissä
- Anonyymi
Delphi 7 - 2002...
- Anonyymi
Microsoft voisi tehdä palveluksen ja estää näiden ikivanhojen paskojen (Delphit, VB6...) toimimisen tarkoituksella, niin ehkä se motivoisi muut paitsi paatuneimmat hörhöt päivittämään osaamistaan
- Anonyymi
Anonyymi kirjoitti:
Microsoft voisi tehdä palveluksen ja estää näiden ikivanhojen paskojen (Delphit, VB6...) toimimisen tarkoituksella, niin ehkä se motivoisi muut paitsi paatuneimmat hörhöt päivittämään osaamistaan
"Microsoft voisi tehdä palveluksen ja estää näiden ikivanhojen"
Ja taas jonkun fanaattisen Delphi -vihaajan kirjoitus.
Ensinnäkin: Microsoftilla ei ole mitään keinoa estää vanhan Delphin toimintaa ilman, että myös uusimman Delphin toiminta estyy siinä samalla. Ja jos Microsoft tahallisesti estää sen uusimmankin Delphin toiminnan, niin kilpailuviranomaisilla on taatusti sanansa sanottavana kilpailijan tuotteen toiminnan tahallisesta sabotoimisesta.
Kyllä myös amerikan yhdysvalloissa on olemassa laki, jolla pyritään edistämään yritysten välistä kilpailua ja siksi tekemään kilpailua rajoittavista toimenpiteistä laittomia.
Joten JOS Microsoft tahallisesti estää sen uusimmankin Delphin toiminnan, niin toivottavasti kilpailuviranomaiset määräävät Microsoftille niin isot sakot kilpailun rajoittamisesta, että niihin verrattuna tähän mennessä suurimmat maksettavaksi määrätyt sakot kilpailun rajoittamisesta ovat pikkurahaa uusiin sakkoihin verrattuna. - Anonyymi
Anonyymi kirjoitti:
"Microsoft voisi tehdä palveluksen ja estää näiden ikivanhojen"
Ja taas jonkun fanaattisen Delphi -vihaajan kirjoitus.
Ensinnäkin: Microsoftilla ei ole mitään keinoa estää vanhan Delphin toimintaa ilman, että myös uusimman Delphin toiminta estyy siinä samalla. Ja jos Microsoft tahallisesti estää sen uusimmankin Delphin toiminnan, niin kilpailuviranomaisilla on taatusti sanansa sanottavana kilpailijan tuotteen toiminnan tahallisesta sabotoimisesta.
Kyllä myös amerikan yhdysvalloissa on olemassa laki, jolla pyritään edistämään yritysten välistä kilpailua ja siksi tekemään kilpailua rajoittavista toimenpiteistä laittomia.
Joten JOS Microsoft tahallisesti estää sen uusimmankin Delphin toiminnan, niin toivottavasti kilpailuviranomaiset määräävät Microsoftille niin isot sakot kilpailun rajoittamisesta, että niihin verrattuna tähän mennessä suurimmat maksettavaksi määrätyt sakot kilpailun rajoittamisesta ovat pikkurahaa uusiin sakkoihin verrattuna."Ensinnäkin: Microsoftilla ei ole mitään keinoa estää vanhan Delphin toimintaa ilman, että myös uusimman Delphin toiminta estyy siinä samalla."
Kyllä on. Muuttaa sellaista rajapintakutsua mitä molemmat käyttää.
"Microsoft tahallisesti estää sen uusimmankin Delphin toiminnan, niin kilpailuviranomaisilla on taatusti sanansa sanottavana kilpailijan tuotteen toiminnan tahallisesta sabotoimisesta."
Ei tarvitse olla kyse kilpailijan tuotteen sabotoinnista vaan oikeudesta muuttaa omaa tuotettaan.
Delphin tekijät voivat sitten vapaasti korjata oman tuotteensa yhteensopivaksi Microsoftin tuotteen kanssa. Tästähän siinä Delphissä yleensäkin maksetaan että pitävät sen toiminnassa luvatun ajan.
- Anonyymi
Huh, onneksi nykyään tulee koodailtua Linux-ympäristössä.
- Anonyymi
jos Delphi lakkaa toimimasta...
emme jää kaipaamaan- Anonyymi
Puhu vain itsestäsi, me muut jäämme kaipaamaan, sillä delphi on ollut ja on edelleen mailman paras koodaus ympäristö.
- Anonyymi
Delphin vastine Linux ympäristössä (Lazarus), soveltuu erinomaisesti graafisen liittymän tekoon Bash Shell ja Python koodille. Vähällä vaivalla erittäin hienoja sovelluksia, joiden suorituskyky on huippuluokkaa.
- Anonyymi
"Delphin vastine Linux ympäristössä (Lazarus), soveltuu erinomaisesti"
Juu, niin periaatetasolla soveltuukin.
Mutta asiassa on myös muutama ongelma:
1) Lazaruksen kelvoton debuggeri (se on kelvoton siksi, kun se perustuu GDB:n käyttöön, ja GDB on debuggerien pohjanoteeraus, eli ohjelmistojen paarialuokkaa !)
Jos löytyisi jokin vaihtoehtoinen tapa debugata tekemäänsä Lazarus -ohjelmaa, niin olisi todella hieno juttu kun pääsisi eroon tuosta kelvottomasta GDB:stä.
2) Delphi -ohjelmissa usein käytetään TWebBrowser -komponenttia.
Lazaruksessa ei normaalisti edes ole ko. TWebBrowser -komponenttia.
Jostain "User Contributions" -kansiosta sellainen saattaa löytyäkin, mutta se toimii vain Windows -käyttöjärjestelmässä.
Muistan joskus vuosia sitten nähneeni jonkin version Basic -ohjelmointikielestä linuxille, jossa oli jokin vastaava viritys. En muista ko. Basicista edes nimeä, enkä näinollen tiedä, onko Basic -työvälineen tekijät päivittäneet työkalunsa nykylinuxien kanssa toimivaksi, vai onko jäänyt unholaan eli tekniikan museoon.
Jos haluat ohjelmallisesti käyttää web -sivua tai web -palvelua, jonka omistaja et itse ole, niin tuo TWebBrowser -komponentti on erittäin hyödyllinen !
Muitakin keinoja on olemassa, mutta nuo muut keinot ovat siitä ikäviä, että jos sivuston omistaja tekee sivustolleen pienenkin muutoksen, niin työmäärä tilanteen korjaamiseksi jos on tehnyt oman ratkaisunsa noilla muilla keinoilla, voi olla valtava !
TWebBrowser -komponenttia käyttämällä taas reagointi web -sivun rakenteen muutokseen on paljon helpompaa (työtä sekin vaatii, mutta selvästi vähemmän).
- Anonyymi
Kauheata paskaa. Onneksi tuollaisia ei tarvitse missään.
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Miehille kysymys
Onko näin, että jos miestä kiinnostaa tarpeeksi niin hän kyllä ottaa vaikka riskin pakeista ja osoittaa sen kiinnostukse1293497- 851825
Olen tosi outo....
Päättelen palstajuttujen perusteella mitä mieltä minun kaipauksen kohde minusta on. Joskus kuvittelen tänne selkeitä tap151591Haluaisin jo
Myöntää nämä tunteet sinulle face to face. En uskalla vain nolata itseäni enää. Enkä pysty elämäänkin näiden kanssa jos541342VENÄJÄ muuttanut tänään ydinasetroktiinia
Venäjän presidentti Vladimir Putin hyväksyi tiistaina päivitetyn ydinasedoktriinin, kertoo uutistoimisto Reuters. Sen mu901184Ylen uutiset Haapaveden yt:stä.
Olipas kamalaa luettavaa kaupungin irtisanomisista. Työttömiä lisää 10 tai enempikin( Mieluskylän opettajat). Muuttavat1071151- 681069
- 65954
Hommaatko kinkkua jouluksi?
Itse tein pakastimeen n. 3Kg:n murekkeen sienillä ja juustokuorrutuksella. Voihan se olla, että jonkun pienen, valmiin k80905Oli pakko saada sut suuttumaan
Muuten et olis jättäny rauhaan. Miks miehet häiritsee intiimeil wa viesteillä vaik kieltää niit tekemästä20887