我有一个自定义文件的图标处理程序。如何限制图标处理程序功能,使其只能由explorer.exe线程调用?
好吧,您可以使用GetModuleFileName(NULL)
来找出处理程序加载到哪个EXE中。您可以在COM方法中这样做(如果您认为处于错误的进程中,则返回E_FAIL
),或者在DllMain
中这样做,使处理程序甚至无法加载。
然而,目前还不清楚你为什么要这么做。例如,图标处理程序由任何应用程序中的标准"打开文件"对话框使用;你不希望你的图标出现在那里吗?
如果你认为这是一种安全措施,那么它不会很好地发挥作用。坚定的攻击者会编写自己的shell扩展,加载到Explorer中,然后从那里访问您的处理程序。