我的自定义文件有一个图标处理程序。我如何限制图标处理程序功能,以便只能由explorer.exe线程调用?
答案 0 :(得分:2)
好吧,您可以使用GetModuleFileName(NULL)
找出您的处理程序加载到哪个EXE。您可以在COM方法中执行此操作(如果您认为在错误的过程中,则返回E_FAIL
),或者在DllMain
中返回,以便您的处理程序甚至无法加载。
然而,目前尚不清楚为什么要这样做。例如,任何应用程序中的标准“打开文件”对话框都使用图标处理程序;你不希望你的图标出现在那里吗?
如果您将此视为某种安全措施,那么它将无法正常运行。确定的攻击者会编写自己的shell扩展,加载到Explorer中,并从那里访问您的处理程序。