几年前,我开发了一个 Silverlight 组件,从 ASP.net Web 应用程序中调用,它使用 PInvoke 访问客户端计算机上的 USB(串行 COM 端口),以允许向某些扫描仪硬件发送命令.
随着 Windows 10 的出现和 Silverlight 的不可避免的消亡,我正在寻找访问客户端 PC 上硬件的替代方法(这是所有 Intranet Web 应用程序的东西,我们对实现有很大的控制权)
目前,我正在根据此页面查看将应用程序注册到 URI 方案(简单解决方案):
然后它会询问您是否要从浏览器中打开您的应用程序,单击确定.嘿 Presto,您的应用程序从浏览器打开,您现在可以将特定链接放入您的网页以从浏览器打开您的应用程序.此页面还记录了如何将参数传递给您的程序.
A few years back I developed a Silverlight Component called from within an ASP.net web app, that uses PInvoke to access a USB (Serial COM port) on the client machine to allow for sending commands to some scanner hardware.
With the advent of Windows 10 and the inevitable demise of Silverlight I am looking for alternatives to accessing hardware on the client PC (This is all Intranet Web Application stuff where we have a lot of control over the implementation)
Currently I am looking at Registering an Application to a URI Scheme (Easy solution) as per this page:https://msdn.microsoft.com/library/aa767914(v=vs.85).aspx OR alternatively maybe Javascript navigator.msLaunchUri (This seems to not be supported in Windows 7, which we need to still support) Refer: https://connect.microsoft.com/IE/feedback/details/864863/documented-api-function-navigator-mslaunchuri-not-present-in-windows-7
The Registering of an Application to a URI Scheme works fine in Windows 7/8/8.1 but seems to have changed in Windows 10 - Does anyone know how I can implement this (Through C# code, registry, something) to allow this to work in Windows 10
I recently wanted to just this as well - and I found the answer so i'm posting it here for future reference and I couldn't find a working example in C# anywhere.
First of all your app needs requireAdministrator
permissions. To do this, right click on the project in the Solution Explorer and click Add New Item
, then select General
and finally Application Manifest
file if you don't already have one. In there, change the requestedExecutionLevel
to requireAdministrator
. Save.
I this is the first time you've done this, you'll need to restart Visual Studio as it probably isnt running under Admin privaleges.
Okay, so I wanted my app to create the registry key when it starts up, so in the constructor for my form I put in the following code, which creates the URL Protocol foo://
for a program called 'oggsplit.exe' (which I happened to have in my C: root so I just used that for testing)
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");
Once you've configured that, save and run the program. You'll get no feedback, and as long as you don't see any errors it should have worked correctly. Now, open your browser (no need to restart or anything) and go to the address foo://hello
. This is what it looks like for me in Google Chrome:
It will then ask you if you want to open your application from the browser, click okay. Hey Presto, your app opens from the browser, you can now put a specilised link into your web page to open your app from the browser. This Page also documents how to pass arguments through to your program as well.
这篇关于在 Windows 10 中将应用程序注册到 URI 方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!