当我在Windows 7上尝试时,您展示的注册工作得非常好。在SlicanP.exe的位置注册的本地应用程序,在我从“开始|运行”菜单和Windows Explorer地址栏中调用slican:URL时正常运行,因此注册有效。
请注意,Internet Explorer在较低的完整性安全上下文中运行,因此可能没有运行本地程序的权限。当我尝试点击到slican:URL的HTML链接或在地址栏中键入slican:URL时,IE无法执行本地应用程序(即使在提示允许之后)。我必须以管理员身份运行IE,然后本地应用程序才能正常运行。
此外,您确实不应直接创建HKEY_CLASSES_ROOT\slican键。改为创建HKEY_CURRENT_USER\Software\Classes\slican(仅限当前用户)或HKEY_LOCAL_MACHINE\Software\Classes\slican(所有用户)。有关更多详细信息,请参阅MSDN:
HKEY_CLASSES_ROOT Key
合并查看HKEY_CLASSES_ROOT
更新: 由于它在Windows 7中可用,微软可能已经改变了在Windows 8中注册URL方案的方式。例如,电话/商店应用程序使用URI激活:
URI激活(XAML)。
URI激活(HTML)
文档中提到了两种注册自定义URI方案的方法:
Internet Explorer有两种机制来注册新的可插拔协议处理程序。第一种方法是注册URI方案名称及其关联应用程序,以便使用该方案导航到URI的所有尝试都会启动应用程序(例如,注册用于处理mailto:或news: URI的应用程序)。第二种方法使用异步可插拔协议API,它允许您通过将URI方案映射到一个类来定义新的协议。
你正在使用第一种方法。尝试改用第二种方法。
然而,我刚刚注意到“异步可插拔协议”在MSDN上列在“遗留API”部分,并且它有以下注释:
“第三方协议实现将无法在使用JavaScript的Windows Store应用程序中加载,也无法在新的Windows UI中的Internet Explorer中加载。”
因此,在Windows 8中可能会工作,也可能不会工作。
更新:我刚刚发现这个:
文件类型和URI的指南
在Windows 8中,应用程序与它们支持的文件类型之间的关系与Windows的先前版本不同。
步骤:使用 Windows 8 自定义协议激活
Windows 8 中的文件类型和协议关联模型已经变化。应用程序不再能够通过编程方式将自己设置为文件类型或协议的默认处理程序。现在,用户始终控制文件类型或协议的默认处理程序。
您的应用程序可以使用现有协议进行通信,例如mailto,或创建自定义协议。协议激活扩展使您能够定义自定义协议或注册以处理现有协议。
另请查看:
在 Windows 8 中通过编程方式设置mailto协议处理程序
以及:
默认程序
//
会将test
转换为远程主机名。slican:test
是调用本地计算机上的自定义应用程序并将test
作为输入参数的正确语法。 - Remy Lebeaumailto
。我应该再想一想... - TLama