2013-10-06 31 views
1

我覺得靜態聯(以CRT,即/MT編譯器選項)非常構建小工具時方便,由於易於部署。 (Sysinternals tools喜歡的Process Explorer是一個例子。)資源(如FLS指數)疲憊與CRT-靜態鏈接COM是InProc服務器

然而,有人讓我注意的是,CRT使用可能像插件架構(如外殼擴展)上下文中運行了幾個資源:尤其是FLS index似乎是最快耗盡的一個,並且當加載第127個CRT靜態鏈接的DLL時,LoadLibrary()可能會失敗。

我已經構建了一些shell擴展,但我從來沒有遇到過這個問題。

有沒有人遇到過這種資源耗盡 CRT靜態鏈接進程內COM服務器(如shell擴展)的問題?

如果是這樣,是否有一個「修復」(除了使用動態鏈接到CRT,這不幸使複雜的部署,並需要一些兆字節的VCRedist下載,而靜態鏈接的CRT小東西只是一個幾百千字節...)。

回答

1

Hmya,這有點像擔心如果你有一個良好的備份,以防流星撞擊破壞機器。你的shell擴展的用戶在前一段時間會發現某些事情是一個漏洞。每當他使用文件+打開對話框時,將100多個DLL注入到進程中並不會被忽視,該程序對世界已經死了5秒或更長時間。

因此,無論他做了些什麼,並使用像SysInternals的AutoRuns這樣的工具來清理他的機器。如果你的擴展功能足夠有用,你將會生存下來。或者用戶不採取對策,並且很高興有一個硬性上限。您的擴展程序將失敗,但用戶無法說明原因。您可能會得到支持電話,您知道該怎麼辦。