Asp.net 使用页面打开个人电脑上的应用程序

    最近做项目碰到要用asp.net页面来打开自己写的一个WinFrom程序。 以前做桌面程序的时候用过System.Diagnostics.Process.Start(“路径”);来打开程序,用的很流畅,效果也很多。但是这次asp.net的页面中加入上面的代码(System.Diagnostics.Process.Start(“路径”);)竟然遇到了坑:

1. 该代码在VS中调试的时候是可以打开PC上WinFrom程序。

2.发布到服务器上以后突发发现上面的代码打不开pc上的WinFrom程序。

  针对问题二各种在网上查找资料,国内国外的网站都看过,碰到类似问题的人有很多。解决的方法都是千变一律说是权限问题,我也问公司的大牛给我说的也是权限问题。他们都说是权限的问题让我以后真的是我没有权限,所以各种修改权限,修改iis的权限,修改本地浏览器的权限。这些最后都是无济于事。最后看浏览页面无意看到微软为了安全不允许使用页面之间操作电脑上的应用程序,仔细想想也有道理。所以就放弃了用上面的方式来启动应用程序的方法。

    过了几个月有人给我说可以使用asp.net 页面访问pc的注册表来启动电脑上的应用程序,我在网上查了一下,这种思路的资料很多,很多人来研究,代码什么其实很简单,研究了一天就搞定了。固体实现的思路是:

   1.将应用程序安装到个人pc上。(记录exe的路径)

   2.将上面记录的路径写到注册表。

  3.编写页面的代码直接访问。(在vs ,发布服务器上都测试成功)

   下面的代码就是写注册表的代码(注册应用程序代码):

Windows Registry Editor Version 5.00  
[HKEY_CLASSES_ROOT\URLTEST]  
"URL Protocol"="D:\\12\\WinFormTest.exe"  
@="URLTESTProtocol"  
[HKEY_CLASSES_ROOT\URLTEST\DefaultIcon]  
@="D:\\WinFormTest.exe,1"  
[HKEY_CLASSES_ROOT\URLTEST\shell]  
[HKEY_CLASSES_ROOT\URLTEST\shell\open]  
[HKEY_CLASSES_ROOT\URLTEST\shell\open\command]  
@="\"D:\\12\\WinFormTest.exe\" \"%1\""  

直接拷贝 粘贴到txt文件内,将txt的后缀修改为.reg然后以管理员的权限运行即可。

Asp.net 使用页面打开个人电脑上的应用程序Asp.net 使用页面打开个人电脑上的应用程序

页面的操作代码:

Asp.net 使用页面打开个人电脑上的应用程序

在这里我不详细说原理,想知道的化去百度上搜url protocal有很多对原理的介绍,这里我重点讲,在这个过程中您会遇到的问题。

(1)点击注册文件时候会给您提示注册失败。

      原因:您的注册文件里面包含了特殊的字符,比如括号等,好好检查一下。

(2)点击了页面的链接后没有反应。

    原因:注册表写入的不完整,也就是您上面的代码没有全部写入到注册表。解决的方法,按照上面的路径打开注册表看看全部都写进去了没,要是没有手动修改一下。既可。

Asp.net 使用页面打开个人电脑上的应用程序

重点是有图上右边的值,那个值是您应用程序的路径。

(3)确保您的应用程序是正确的,如果应用程序启动时候出错了,点击了页面的链接后也会没有反应。

第一次写,上面是我遇到的问题,希望对您有所帮助谢谢。