使用 C++ 在 Windows 8 中无需固定到“开始”屏幕的应用快捷方式

Posted

技术标签:

【中文标题】使用 C++ 在 Windows 8 中无需固定到“开始”屏幕的应用快捷方式【英文标题】:App Shortcut without pinning to Start Screen in Windows 8 using C++ 【发布时间】:2012-11-01 23:55:01 【问题描述】:

我们公司有一个用 C++ 编写的安装程序,它使用 IShellLink 创建程序快捷方式,如下所述: http://msdn.microsoft.com/en-us/library/windows/desktop/bb776891%28v=vs.85%29.aspx

在 Windows 8 上,在“开始”菜单中创建的所有快捷方式也将在“开始”屏幕上显示为标题。我们要做的是以编程方式控制开始屏幕上显示的图标。在下面的文章中,它将选项“System.AppUserModel.StartPinOption”描述为:

要创建添加应用快捷方式而不将其固定到“开始”屏幕 查看,可以在快捷方式上设置如下属性: System.AppUserModel.StartPinOption = 1。1 的符号名称是 APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL。

http://msdn.microsoft.com/en-us/library/windows/desktop/jj673981%28v=vs.85%29.aspx

这似乎可以使用 Windows Installer 实现,但是鉴于我们的上下文,我还没有找到在 C++ 中以编程方式完成相同功能的方法。

如果有人有任何关于此的信息,或某种示例,将不胜感激。

【问题讨论】:

C++ 名称是PKEY_AppUserModel_StartPinOption 感谢雷蒙德的回复。您是否知道任何有关如何使用它以及应该在创建过程中的什么时候完成它的示例?即使是摘要伪代码也会有所帮助。 您可以adapt this code,但不是将PKEY_AppUserModel_ExcludeFromShowInNewInstall 设置为VARIANT_TRUE,而是将PKEY_AppUserModel_StartPinOption 设置为APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL 我会试一试的。非常感谢 Raymond,感谢您的回复和其他信息。 Raymond 还为此创建了一篇完整的文章和示例:Marking a shortcut to say that it should not be placed on the Windows 8 Start page upon installation or treated as a newly-installed application 【参考方案1】:

我发现的一件事是“..NewInstall”字面意思就是这个意思。即使在您删除/更新 .lnk 文件后,用户对磁贴的自定义似乎也会保留。这可能是一件好事,因为更新不会重置用户的环境,但这确实意味着我需要在测试期间使用全新安装的 Windows 8。我使用了一个虚拟机盒子来减少痛苦。至少我不知道如何删除从环境中设置的属性。

【讨论】:

删除并重新创建图标/快捷方式文件将重置标志并使其再次成为“新”。 试了很多次都没有成功。重新创建快捷方式后,瓷砖出现在我离开它们的地方。我们的 QA 小组发现了同样的事情。我们实际上喜欢这种行为。但是,如果您是正确的,那么我认为需要重新启动或重新登录才能刷新缓存。

以上是关于使用 C++ 在 Windows 8 中无需固定到“开始”屏幕的应用快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

opencv 和 c++ 编译版本无需运行库

如何使用批处理文件固定到开始菜单(Windows 10)

C++:从具有固定格式的字符串中挑选部分/数据

如何在 C++ 运行时组件中的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll

无需单独安装或更新即可与 Windows xp、7、8 一起使用的最佳 .net 框架版本

是否可以使用标准 C++ 线程而不是 FLTK 超时来更新窗口?