2011-09-22 25 views
2

在Windows XP上,我有一個.exe文件,它在本地應用程序目錄中以msvcp90.dllmsvcr90.dllMicrosoft.VC90.CRT.manifest運行。我也有這些.dll文件的C:\WINDOWS\WinSxS\Policies的策略文件,它由Visual C++ 2008 SP1 Redistributable Package安裝。我想刪除此策略文件,並使用我的本地目錄中的應用程序配置文件。該政策文件是:使用本地配置文件替換Microsoft.VC90.CRT WinSxS策略文件

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity type="win32-policy" name="policy.9.0.Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/> 
    <dependency> 
     <dependentAssembly> 
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/> 
      <bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.1"/> 
      <bindingRedirect oldVersion="9.0.30201.0-9.0.30729.1" newVersion="9.0.30729.1"/> 
     </dependentAssembly> 
    </dependency> 
</assembly> 

我的配置文件是:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <dependentAssembly> 
       <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/> 
       <bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.1"/> 
       <bindingRedirect oldVersion="9.0.30201.0-9.0.30729.1" newVersion="9.0.30729.1"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

的Dependency Walker時使用的配置文件,而不是政策文件的報告並排端錯誤 - 出了什麼問題?另外,應該將配置文件命名爲<application>.exe.configMicrosoft.VC90.CRT.config

(爲了澄清,使用該策略文件時不會出現任何錯誤。然而,這裏的客戶是不允許安裝再發行組件包。

MSDN docs狀態的應用程序配置文件可以重定向到使用不同的應用同樣的組件(per-application configuration),並且它可以覆蓋現有的政策(發佈配置)文件,如果需要的。因此,我認爲必須能夠使用本地應用程序配置文件,上述文件中的東西的版本丟失或不正確。)

+0

使用您所要的文件並擺脫錯誤。 –

回答

0

這是我的理解是,C運行不能以這種方式出於安全原因被重定向。您的選擇是將運行時靜態構建到您的項目中,或者將您的應用程序目錄下的DLL加載到並排系統中。

2

你的配置數據是<runtime>節點下。它應該在<windows>節點下。

我必須提醒大家,包含綁定重定向高度氣餒,是inteded爲系統管理員提供的程序兼容性的問題上,他們adminster的機器打交道,航運應用程序配置文件。應用程序開發人員應該創作他們的應用程序,以使用他們所依賴的特定CRT版本的最新版本,並使用該版本附帶的默認全局策略。

事實上,從Windows 2003中,在應用程序配置文件中使用綁定重定向需要在應用程序兼容性數據庫條目。