Windows 8具有一个功能:它可以从搜索面板(在屏幕的右侧)启动应用程序。它的工作原理如下:
C:\User\<UserName>\AppData\Packages\windows.immersivecontrolpanel_cw5n1h2txyewy\LocalState\Indexed\Settings\en-US
中创建一个特殊的.xml文件(如果不存在),其内容如下所示。该文件的扩展名为settingscontent-ms
Xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<PCSettings>
<SearchableContent xmlns="http://schemas.microsoft.com/Search/2013/SettingContent">
<ApplicationInformation>
<AppID>windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel</AppID>
<DeepLink>%Canonical name or application path%</DeepLink>
<Icon>%App path%,-%Resource number%</Icon>
</ApplicationInformation>
<SettingIdentity>
<PageID>%GUID as in instruction above%</PageID>
<HostID>{7E0522FC-1AC4-41CA-AFD0-3610417A9C41}</HostID>
<Condition>shcond://v1#RegkeyExists;0;Regkey;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\%GUID as in instruction above%</Condition>
</SettingIdentity>
<SettingInformation>
<Name>@%App path%,-%Resource number%</Name>
<Description>@%App path%,-%Resource number%</Description>
<HighKeywords>%App decription%</HighKeywords>
</SettingInformation>
</SearchableContent>
</PCSettings>
我们可以看到名称为HostID
的节点。 Windows将代码GUID中指定的内容写入此节点,但是这破坏了我的应用程序的工作能力。如果我尝试通过单击xml文件或在搜索面板中选择我的应用程序通过此“快捷方式”执行我的应用程序,则系统会向我显示一条消息:“未指定的错误”。
当我手动将HostID
值更改为{12B1697E-D3A0-4DBC-B568-CCF64A3F934D}
时,它开始工作正常。
我浏览了注册表,以便找到有关这两个GUID的信息,但是我什么也没找到。我也在寻找对应于我的应用程序和另一个应用程序的注册表值之间的差异,但是在正常工作的应用程序中,也没有发现任何重大差异。
[我也尝试删除该文件并在ProcMon下登录系统,我花了一些时间:资源管理器尝试打开该文件并失败,并显示ERROR_FILE_NOT_FOUND
,资源管理器创建了丢失的文件,读取注册表并向创建的文件中写入内容,然后它关闭文件。但是在这些消息之间我没有发现任何有趣的东西,可以帮助我解决问题。
[我发现注册表项HKEY_CLASSES_ROOT\CLSID\%App GUID%\System.ApplicationName
包含与DeepLink
标记完全相同的代码(这是我应用程序中的第一个错误-指定的键为空),但是仍然存在“ HostID
错误”的问题。
没有人知道这是什么,以及如何使Windows将严格的GUID写入此标签,或至少有关此标签的一些有用信息?我只是无法想象要进行任何其他更改,但是我认为我需要根据我的应用程序注册表项进行一些更改。
Windows 8具有一个功能:它可以从搜索面板(在屏幕的右侧)启动应用程序。它的工作方式如下:开发人员在此之后注册他或她的应用程序...
我找到了解决方案:只需将应用程序的GUID(与PageID
中的相同)放入DeepLink。为此,您需要将此GUID作为字符串值写入HKEY_CLASSES_ROOT\CLSID\%App GUID%\System.ApplicationName
。