我需要帮助。我想在Windows 8中设置正确的关联文件。我有一个编写MFC C ++的程序。这是.txt查看器。我为当前用户尝试关联文件。我为我的应用程序创建安装程序,我可以将我的应用程序设置为默认值,但它在Windows 8中不起作用。
需要使用什么? THX。
答案 0 :(得分:2)
在Windows 8中,只有一种方法可以做到这一点。您应该将应用程序添加到默认应用程序。然后使用默认程序要求用户设置关联。不确定现在注册表编辑的旧方法是不可用的。在Windows 8中,将Hash变量添加到UserChoice注册表项。它对用户和应用程序是独一无二的。如果错误,默认情况下不启动YourAppName,但Windows 8要求选择应用程序。
如何将应用程序添加到默认程序的简短说明。完整指南http://msdn.microsoft.com/en-us/library/windows/desktop/cc144154%28v=vs.85%29.aspx 添加到注册表
key: "HKLM\Software\RegisteredApplications" name: "YourAppName" value: "Sofware\YouCompany\YourAppName\Capabilities"
key: "HKLM\Sofware\YouCompany\YourAppName\Capabilities" name: "ApplicationDescription" value: "just a description"
key: "HKLM\Sofware\YouCompany\YourAppName\Capabilities" name: "ApplicationName" value: "YourAppName"
key: "HKLM\Sofware\YouCompany\YourAppName\Capabilities\FileAssociations" name: ".txt" value: "Progid.txt"
现在YourAppName已添加到默认程序
需要调用具有应用程序文件关联的对话框。可以使用IApplicationAssociationRegistrationUI :: LaunchAdvancedAssociationUI来完成 http://msdn.microsoft.com/en-us/library/windows/desktop/bb776329%28v=vs.85%29.aspx
IApplicationAssociationRegistrationUI *applicationAssociationRegistrationUI = 0;
CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI,
0,
CLSCTX_INPROC_SERVER,
IID_IApplicationAssociationRegistrationUI,
(LPVOID*)&applicationAssociationRegistrationUI);
if (applicationAssociationRegistrationUI)
applicationAssociationRegistrationUI->LaunchAdvancedAssociationUI(L"YourAppName");