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
710
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
Kiitos nainen
Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik185243MTV: Kirkossa saarnan pitänyt Jyrki 69 koki yllätyksen - Paljastaa: "Se mikä oli hyvin erikoista..."
Jyrki Linnankivi alias Jyrki 69 on rokkari ja kirkonmies. Teologiaa opiskeleva Linnankivi piti elämänsä ensimmäisen saar1162730- 102274
Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?
Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun5882012Kirjoita yhdellä sanalla
Joku meihin liittyvä asia, mitä muut ei tiedä. Sen jälkeen laitan sulle wappiviestin1221739Olet hyvin erilainen
Herkempi, ajattelevaisempi. Toisaalta taas hyvin varma siitä mitä haluat. Et anna yhtään periksi. Osaat myös ilkeillä ja701322Yksi syy nainen miksi sinusta pidän
on se, että tykkään luomusta. Olet luonnollinen, ihana ja kaunis. Ja luonne, no, en ole tavannut vielä sellaista, joka s411309Paljastavat kuvat Selviytyjät Suomi kulisseista - 1 päivä vs 36 päivää viidakossa - Katso tästä!
Ohhoh! Yli kuukausi viidakossa voi muuttaa ulkonäköä perusarkeen aika rajusti. Kuka mielestäsi muuttui eniten: Mia Mill31088Hyvää Joulua mies!
Toivottavasti kaikki on hyvin siellä. Anteeksi että olen hieman lisännyt taakkaasi ymmärtämättä kunnolla tilannettasi, o641047Veda uskonto vs. muut uskonnot
Mitenkähän tuo Veda(Krisha)uskonto loppujen lopuksi eroaa muista niin sanotuista ilmoitus uskonnoista? Siinäkin vedotaan3821041