如何限制特定进程访问图标处理程序



我有一个自定义文件的图标处理程序。如何限制图标处理程序功能,使其只能由explorer.exe线程调用?

好吧,您可以使用GetModuleFileName(NULL)来找出处理程序加载到哪个EXE中。您可以在COM方法中这样做(如果您认为处于错误的进程中,则返回E_FAIL),或者在DllMain中这样做,使处理程序甚至无法加载。

然而,目前还不清楚你为什么要这么做。例如,图标处理程序由任何应用程序中的标准"打开文件"对话框使用;你不希望你的图标出现在那里吗?

如果你认为这是一种安全措施,那么它不会很好地发挥作用。坚定的攻击者会编写自己的shell扩展,加载到Explorer中,然后从那里访问您的处理程序。

最新更新