(这是不是问题的答案,但可以帮助你在你的调查。)
我创建并registred我自己的壳链路扩展。资源管理器重新启动后,它使用我的扩展并通过IPropertyStore接口询问不同的属性。完整的日志:
TMyLinkExtension.07BA12F0 is created
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkW out Result=S_OK
TMyLinkExtension.07BA12F0.QueryInterface IID_IInitializeWithFile out Result=S_OK
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize started
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize in AFileName=C:\Users\Dec\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Total Commander\1.mylnk
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize in AOpenMode=STGM_READ
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize out Result=S_OK
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize finished
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkW out Result=S_OK
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkDataList out Result=S_OK
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags started
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags out Result=E_NOTIMPL
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags finished
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath started
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFileName=0C1FF058
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFileNameLength=260
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in @AFindData=0C1FEE08
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFlags=SLGP_RAWPATH
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath out Result=E_NOTIMPL
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath finished
TMyLinkExtension.07BA12F0.QueryInterface IID_IPropertyStore out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_ID (Caption: AppUserModelId, CanonicalName: System.AppUserModel.ID, Type: VT_LPWSTR)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_PreventPinning (Caption: Prevent pinning, CanonicalName: System.AppUserModel.PreventPinning, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData.vt=VT_BOOL
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData=0
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 23 (Caption: System.AppUserModel.ExcludedFromLauncher, CanonicalName: System.AppUserModel.ExcludedFromLauncher, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData.vt=VT_BOOL
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData=0
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 14 (Caption: Host environment, CanonicalName: System.AppUserModel.HostEnvironment, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_StartPinOption (Caption: Start pin option, CanonicalName: System.AppUserModel.StartPinOption, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 18 (Caption: Installed by, CanonicalName: System.AppUserModel.InstalledBy, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_IsDualMode (Caption: Is dual mode, CanonicalName: System.AppUserModel.IsDualMode, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_Link_Arguments (Caption: Arguments, CanonicalName: System.Link.Arguments, Type: VT_LPWSTR)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0 is destroyed
我试着用不同的值来发挥,但仍然无法找到,显示在开始菜单中我1.mylnk文件的方式,但也许这个记录会帮助你。
您是否实现了与文件扩展名关联的IShellLink外壳扩展? –
我们没有。 “IShellLink”的大部分成员不能用我们的快捷方式实现。例如,我们的快捷方式存储一个或多个应用程序名称值,然后将其传递给启动器。程序文件的确切路径是未知的,即使它是,也可能有多个。这使得无法正确实现'GetPath' /'SetPath'。 这不可能是浏览器是如何决定显示哪些快捷键,虽然,否则就必须加载和以显示列表中给定文件夹测试每一个快捷方式文件。这将表现不佳。 –
虽然...我想它会加载并测试它实际显示的每个快捷方式,否则图标处理程序将无法工作。我想这不能排除的是,浏览器可能会使用'IShellLink'的信号量是否显示给定的快捷方式... –