2011-09-12 62 views
1

我正在運行我的開發環境Windows XP。我需要訪問函數SHGetKnownFolderPath。我的團隊建議我只更新我的shell32.dll並更新我的頭文件。在Windows XP中手動更新shell32.dll是否安全/實用?

功能是記錄在這裏: http://msdn.microsoft.com/en-us/library/bb762188%28v=vs.85%29.aspx

現在明白,這個問題的重點是覆蓋/通過複製粘貼手動更新的SHELL32.DLL的可行性。請不要使用上述功能的解決方法/替代方法進行響應。這不是這個問題的重點。

簡單地採取Windows 7版本的shell32.dll並粘貼在我的(在XP中)是否安全?由於害怕謀殺我的整個操作系統,我害怕去測試它。我不知道Windows的所有庫相互依賴關係,以及這是否會兼容。聽起來令人難以置信的不穩定,但這正是我所提議的。

+1

謀殺確實是合適的名詞。不知道它是否是受保護的操作系統文件之一。如果是,那麼你的機器仍然存活,但你仍然沒有得到你想要的東西。 –

+6

如果你試過這個,甚至可以運行瀏覽器,我會感到震驚。如果這個功能真的起作用,我想我的頭會爆炸。我知道微軟力求向後兼容,但我很確定這不是他們的想法。 – Luke

+0

只是好奇,但你爲什麼不只是升級你的操作系統,以保持與其他團隊的一致?你不能永遠留在Windows XP上。 (好吧,也許你可以......) – selbie

回答

4
  1. 手動複製該DLL通過複製粘貼將無法工作,因爲WFP將在踢,恢復原來的DLL。 IIRC只允許微軟的數字簽名更新替換正在運行的系統上的系統DLL,以避免這樣的混亂。您應該離線替換文件(例如,從Windows/BartPE/Linux/...的其他副本),或以某種方式禁用/解決WFP問題。 所以,這是不實際的。

  2. 考慮從其他版本的Windows系統DLL並複製它似乎像一個可怕的想法。外殼從Windows XP更改很多到Windows 7,我相信會有很多缺失的依賴關係。即使您設法將Windows 7 shell的每個文件複製到Windows XP,這些文件都將取決於在Vista和7中添加的較新的user32/gdi32/ntdll/...函數,因此無論如何它都不起作用。

  3. 因此,我認爲替換shell32.dll的最可能的後果是加載幾乎任何非核心組件的操作系統失敗:由於缺少依賴關係導致加載失敗的shell32.dll,幾乎所有的GUI可執行文件與其相關的鏈接將無法啓動。 所以,這是不安全的。

  4. 除了從技術的角度來看問題之外,我強烈懷疑這也是非法的。擁有Windows XP和Windows 7許可證無濟於事,我認爲這被認爲是「軟件產品的修改」,這是微軟EULA明確禁止的。 所以,這不合法。

  5. 如果你想向後兼容XP只需使用SHGetFolderPath而不是做這一切。

0

也許他們知道他們在說什麼。無論如何,我會建議你創建一個系統還原點,以防萬一,下載一個最小的Linux發行版,以便在極端的情況下(即Windows無法啓動),你只需恢復與你的shell32.dll。

+0

嘿,它更多的是一個即時決定。我懷疑這裏的任何人都曾經嘗試過公然覆蓋這個DLL。 我喜歡有一個備份Linux發行版的想法。 – TheBuzzSaw

+0

@BlackBear你很確定這個建議嗎?你真的相信這可以奏效嗎? –

+0

@David Heffernan:我不認爲這會造成永久性損害。我知道這個DLL是Windows的主要組件之一,但最糟糕的是它不會啓動。要清楚的是,我並不是說使用其他DLL將不會工作,我只是提供一些關於修復可能出現的錯誤的建議:) – BlackBear

2

shell32.dll是一個核心操作系統文件。我期望減去Windows 7版本下的其他依賴項,你會有各種意想不到的行爲。最好在虛擬機內測試一個完整的Windows 7環境,而不是複製另一版本操作系統的一部分。

更大的問題:你認爲微軟每個人都測試了這個確切的組合嗎?如果遇到問題並致電支持,您是否相信您會發現您的配置對於您的工作是支持的?在過去爲MSFT工作之後,我認爲對兩者的答案可能不會。

+1

很難測試一些不起作用的東西。 –

5

您不應該手動更改Windows DLL。 Windows 7 DLL將具有在XP上無法解析的依賴關係。即使這很有效(非常不可能),下一次從Windows Update安裝補丁程序時,它可能會因相關性而中斷,或者將Windows 7 DLL替換回XP版本。

更新:這是行不通的。 Windows 7 DLL對XP中不存在的API集具有依賴性。

3

是否安全/實用手動更新 Windows XP中的shell32.dll?

-1

我不這麼認爲...... 但如果仍想嘗試,那麼我建議你安裝一個虛擬機,並嘗試它。這種方式更安全。

相關問題