c - Er det sikkert/praktisk at manuelt opdatere shell32.dll i Windows XP?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kører mit udviklingsmiljø Windows XP. Jeg har brug for adgang til funktionen SHGetKnownFolderPath. Mit team foreslår, at jeg simpelthen opdaterer min shell32.dll med deres og opdaterer mine headerfiler.


Funktionen er dokumenteret her:
http://msdn.microsoft.com/en-us/library/bb762188\%28v=vs.85\%29.aspx[2]


Nu forstår, at fokuset på dette spørgsmål er om levedygtigheden af ​​at overstyre/ajourføre shell32.dll manuelt via kopi-indsæt. Venligst svar ikke med løsninger/alternativer til ovennævnte funktion. Det er ikke meningen med dette spørgsmål.


Er det sikkert at bare tage Windows 7-versionen af ​​shell32.dll og indsætte over min (i XP)? Jeg er bange for at teste det af frygt for at myrde hele mit operativsystem. Jeg kender ikke alle Windows 'biblioteksinterafhænigheder, og om det selv ville være kompatibelt. Det lyder utroligt ustabilt, men det er det, jeg foreslår.

Bedste reference



  1. Kopiering manuelt dll via kopi-pasta virker ikke, fordi WFP vil sparke ind og gendanne den oprindelige dll. IIRC Kun digitalt underskrevne opdateringer fra Microsoft må erstatte systemdlls på et kørende system for at undgå messer som dette. Du skal erstatte filen offline (f.eks. Fra en anden kopi af Windows/BartPE/Linux/...), eller deaktivere/luk WFP på en eller anden måde. Så det er ikke praktisk. [3]

  2. Hvis du tager et system dll fra en anden version af Windows og kopierer det, ser det ud som en forfærdelig ide. Skallen skiftede meget fra Windows XP til Windows 7, jeg er sikker på, at der vil være mange manglende afhængigheder. Selvom du har formået at kopiere hver fil i Windows 7-shell til Windows XP, disse filer vil afhænge af nyere user32/gdi32/ntdll/... funktioner tilføjet i Vista og 7, så det ville ikke fungere alligevel.

  3. Så jeg tror, ​​at den mest sandsynlige konsekvens af at erstatte shell32.dll ville være manglen på at indlæse næsten enhver ikke-kerne komponent i OS: failing shell32.dll at indlæse på grund af manglende afhængigheder, næsten enhver GUI-eksekverbar, der linker mod det ville undlade at starte. Så det er ikke sikkert.

  4. Andre end at være et problem ud fra et teknisk synspunkt, har jeg stærkt mistanke om, at det også er ulovligt. At have en licens til både Windows XP og Windows 7 ville ikke hjælpe, jeg mener, at dette betragtes som 'ændring af softwareproduktet' , der udtrykkeligt er udelukket af Microsofts EULA'er. Så det er ikke lovligt.

  5. Hvis du vil have kompatibilitet bagud med XP, skal du bare bruge SHGetFolderPath i stedet for at gøre alt dette rod. [4]


Andre referencer 1


Du bør ikke ændre en Windows DLL manuelt. En Windows 7 DLL vil have afhængigheder, der ikke løser XP. Selvom dette virker (meget usandsynligt), næste gang du installerer en patch fra Windows Update, kan den enten gå i stykker på grund af afhængigheder eller erstatte din Windows 7 DLL tilbage til XP-versionen.


UPDATE: Dette har bare vundet. T arbejde. Windows 7 DLL har afhængigheder på API-sæt, som ikke eksisterede i XP.

Andre referencer 2



  Er det sikkert/praktisk at manuelt opdatere shell32.dll i
  Windows XP?



Ingen.

Andre referencer 3


shell32.dll er en kerne operativsystem fil. Jeg ville forvente, at minus de andre afhængigheder under Windows 7-versionen ville du have alle mulige uventede adfærd. Det ville være bedre at teste i et VM et komplet Windows 7-miljø snarere end at kopiere over en del af en anden version af et operativsystem.


Større spørgsmål: Synes du, at nogen hos Microsoft hver testede denne nøjagtige kombination? Hvis du løber ind i problemer, og du ringer til support, mener du, at du vil opdage, at din konfiguration er en understøttet til din indsats? Efter at have arbejdet for MSFT tidligere ville jeg tro at svaret på begge sandsynligvis ikke er.

Andre referencer 4


Sandsynligvis ved de hvad de siger. I hvert fald vil jeg foreslå dig at oprette et systemgendannelsespunkt, og bare i tilfælde af at downloade en minimal Linux-distribution, så i ekstreme tilfælde (dvs. Windows kan ikke starte), skal du blot gendanne deres shell32 .dll med din.

Andre referencer 5


Jeg tror det ikke ...
Men hvis du stadig vil prøve, så foreslår jeg at du installerer en virtuel maskine og prøv den der. denne måde meget sikrere.