gpt4 book ai didi

c# - 在 Windows 10 中将应用程序注册到 URI 方案

转载 作者:太空狗 更新时间:2023-10-29 19:45:09 24 4
gpt4 key购买 nike

几年前,我开发了一个从 ASP.net 网络应用程序中调用的 Silverlight 组件,它使用 PInvoke 访问客户端计算机上的 USB(串行 COM 端口),以允许向某些扫描仪硬件发送命令。

随着 Windows 10 的出现和 Silverlight 不可避免的消亡,我正在寻找访问客户端 PC 上硬件的替代方案(这是所有 Intranet Web 应用程序的东西,我们对实现有很多控制权)

目前我正在按照此页面查看将应用程序注册到 URI 方案(简单解决方案):https://msdn.microsoft.com/library/aa767914(v=vs.85).aspx或者也可能是 Javascript navigator.msLaunchUri(这似乎在 Windows 7 中不受支持,我们仍然需要支持它)引用:https://connect.microsoft.com/IE/feedback/details/864863/documented-api-function-navigator-mslaunchuri-not-present-in-windows-7

将应用程序注册到 URI 方案在 Windows 7/8/8.1 中运行良好,但在 Windows 10 中似乎发生了变化 - 有谁知道我如何实现这个(通过 C# 代码、注册表等)以允许这个在 Windows 10 中工作

最佳答案

我最近也想这样做 - 我找到了答案,所以我将它张贴在这里以供将来引用,但我在任何地方都找不到 C# 中的工作示例。

首先,您的应用需要requireAdministrator 权限。为此,请右键单击解决方案资源管理器中的项目并单击添加新项,然后选择常规,最后选择Application Manifest 文件,如果您还没有。在那里,将 requestedExecutionLevel 更改为 requireAdministrator。保存。

如果这是您第一次执行此操作,您需要重新启动 Visual Studio,因为它可能未在管理员权限下运行。

好的,所以我希望我的应用程序在启动时创建注册表项,所以在我的表单的构造函数中,我输入了以下代码,它创建了 URL 协议(protocol) foo://对于一个名为“oggsplit.exe”的程序(我碰巧在我的 C: root 中有它,所以我只是用它来测试)

RegistryKey key;
key = Registry.ClassesRoot.CreateSubKey("foo");
key.SetValue("", "URL: Foo Protocol");
key.SetValue("URL Protocol","");

key = key.CreateSubKey("shell");
key = key.CreateSubKey("open");
key = key.CreateSubKey("command");
key.SetValue("", "C:\\oggsplit.exe");

配置完成后,保存并运行程序。您不会得到任何反馈,只要您没有看到任何错误,它就应该可以正常工作。现在,打开您的浏览器(无需重新启动或任何其他操作)并转到地址 foo://hello。这就是我在 Google Chrome 中的样子: enter image description here

然后它会询问您是否要从浏览器打开您的应用程序,单击确定。嘿 Presto,您的应用程序从浏览器打开,您现在可以将一个特定的链接放入您的网页以从浏览器打开您的应用程序。 This Page还记录了如何将参数传递给您的程序。

关于c# - 在 Windows 10 中将应用程序注册到 URI 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32694642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com