Inmiddels heb je hopelijk mijn functie op 64-bits Windows gezien in de nieuwste uitgave vanPC Pro. En misschien heb je wat troost put uit mijn luchtige verzekering dat je je niet al te veel zorgen hoeft te maken over de compatibiliteit van applicaties. Bijna alle moderne 32-bits software zou probleemloos moeten worden geïnstalleerd en uitgevoerd op een 64-bits versie van Windows.
Als je zoiets schrijft, vraag je natuurlijk om problemen.
er gebeurt niets als ik op de startknop klik
En ja hoor, net toen ons septembernummer op de kiosken landde, ontdekte ik datPC ProDe interne CMS-client werkte alleen op - je raadt het al - 32-bits Windows. Toen ik probeerde een nieuwe recensie te maken vanaf mijn 64-bits desktop, leverde alleen een obscure fout op over een ontbrekende COM-klassefabriek.
Vliegen met de vlaggen
Een beetje graven bracht het probleem aan het licht. Een ondeugende ontwikkelaar had een perfect geldige 32-bits .NET-toepassing geschreven, maar had nagelaten deze als specifiek 32-bits code te markeren. 64-bits Windows draaide het daarom in 64-bits modus, waardoor fouten werden veroorzaakt wanneer de software geen toegang kon krijgen tot de 32-bits systeembronnen die het verwachtte.
Gelukkig is dit een eenvoudig probleem op te lossen. Microsoft's CorFlags opdrachtregelprogramma - onderdeel van .NET Framework - stelt u in staat de koptekstvlaggen op uitvoerbare bestanden te wijzigen, inclusief degene die aangeeft wanneer een toepassing in 32-bits modus moet worden uitgevoerd. Het instellen van deze vlag voor onze databasetoepassing was een kwestie van typen CorFlags application.exe / 32bit +
Enalstublieft- een 32-bits applicatie die perfect werkt op 64-bits Windows. Het is het proberen waard als je ooit een soortgelijk probleem tegenkomt.
hoe deel je iemands verhaal op instagram
Welke map met programmabestanden?
Nu ik het over het onderwerp heb, is hier een gerelateerd probleem dat we tegenkwamen toen we begonnen met het beoordelen van pc's met 64-bits Vista. In dit geval was de lastige software niemand minder dan dePC Proreal-world benchmark-suite. Alles leek perfect te installeren, maar toen we de tests daadwerkelijk startten, kregen we foutmeldingen die niet werden gevonden.
Ik begon het probleem op te sporen met de hulp van het onmisbare van SysInternals Procesmonitor nut, en nogmaals, de uitleg bleek genadig eenvoudig te zijn (zo eenvoudig zelfs dat ik me een beetje dwaas voelde omdat ik het zelf niet had uitgewerkt).
Verschillende bestanden werden niet gevonden omdat in 64-bits Windows de map Program Files alleen is gereserveerd voor 64-bits applicaties. 32-bits programma's worden geïnstalleerd in een map met de naam Program Files (x86). Onze testscripts bevatten hardgecodeerde paden die faalden omdat onze 32-bits applicaties zich niet op hun gebruikelijke locatie bevonden.
hoe verander je je reddit gebruikersnaam
Als u een probleem als dit tegenkomt, kunt u dit eenvoudig oplossen door expliciete verwijzingen naar C: Program Files te verwijderen en in plaats daarvan% ProgramFiles% te gebruiken (deze slimme omgevingsvariabele zou moeten worden omgezet in Program Files of Program Files (x86), afhankelijk van of het proces dat het aanroept 64-bit of 32-bit is). Als u niet bij de bron kunt komen om de paden te wijzigen, is een snelle en vuile oplossing om uw 32-bits bestanden handmatig naar Program Files te kopiëren. Toen ik dit eenmaal had gedaan, liepen onze benchmarks zonder problemen.
Dus daar heb je het: 32-bits applicatiesDoendraaien op 64-bit Windows ... maar soms moet je een paar aannames van programmeurs omzeilen om ze op gang te krijgen!