首页 新闻 搜索 专区 学院

asp.net如何打开本地exe的应用程序

0
悬赏园豆:15 [待解决问题]

客户要求在网站上添加一个链接可以打开本地安装的一个exe应用程序,这个应用程序每个人的安装路径都是一样的,网上的很多方法都试了还是不行!例如

  Process p = new Process();

            p.StartInfo.FileName = @"c:\a.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.Start();

            StreamReader sr = p.StandardOutput;
            s = sr.ReadToEnd();

            p.WaitForExit();
            p.Close();

这种方式不行的,不知道是不是我操作问题。

还有通过注册表的方式,查了一下,不知道怎么搞的!在线等高手指点!

翟中龙的主页 翟中龙 | 初学一级 | 园豆:97
提问于:2014-03-26 08:54
< >
分享
所有回答(4)
0

是不是权限问题?

吴瑞祥 | 园豆:29364 (高人七级) | 2014-03-26 09:03

不知道啊,也不报错!

 function runExecutable() {
            var executableFullPath = 'F:\\常用工具\\屏幕拾色器.exe';
            var execut = 'C:\\Program Files\\Youdao\\Dict4\\YodaoDict.exe';
            try {
                var shellActiveXObject = new ActiveXObject("WScript.Shell");
                if (!shellActiveXObject) {
                    alert('Could not get reference to WScript.Shell');
                    return;
                }
                shellActiveXObject.Run(executableFullPath, 1, false);
                shellActiveXObject = null;
            }
            catch (errorObject) {
                alert('Error:\n' + errorObject.message);
            }
        } 


通过JS的这种方式调用的话,会提示automation 服务器不能创建对象的错误

支持(0) 反对(0) 翟中龙 | 园豆:97 (初学一级) | 2014-03-26 09:10
0

由于安全原因,你需要制作一个 ActiveX 控件,将启动客户本地程序的逻辑写在此 ActiveX 控件中。

Launcher | 园豆:45045 (高人七级) | 2014-03-26 10:11
0

ActiveX没签名的话,部署起来很麻烦,现在我的办法是客户端修改安全级别,通过js建立ActiveX对象执行启动脚本。

清海扬波 | 园豆:823 (小虾三级) | 2014-03-26 10:18

具体怎么操作啊,能不能给个示例,谢谢啊

支持(0) 反对(0) 翟中龙 | 园豆:97 (初学一级) | 2014-03-26 10:19

@翟中龙: 也就是你上面的方法,但是要注意路径里面的双斜线个数。对了就可以了。

支持(0) 反对(0) 清海扬波 | 园豆:823 (小虾三级) | 2014-03-26 10:21

@清海扬波: 我在本地的IIS上可以的,但是通过局域网内的某个电脑访问就提示“automation 服务器不能创建对象的错误”是怎么会事啊?

支持(0) 反对(0) 翟中龙 | 园豆:97 (初学一级) | 2014-03-26 10:23

@翟中龙: 在对应电脑上,dos注册regsvr32 scrrun.dll试试

支持(0) 反对(0) 清海扬波 | 园豆:823 (小虾三级) | 2014-03-26 10:28

@清海扬波: 这个也试过了

 function executeCommands(inputparms) {
            // Instantiate the Shell object and invoke its execute method.

            var oShell = new ActiveXObject("Shell.Application");
           
            var execut = 'C:\\Program Files\\TeamViewer\\Version7\\TeamViewer.exe';
            var commandtoRun = "C:\\WINDOWS\\Notepad.exe";
           
            // Invoke the execute method.
            oShell.ShellExecute(execut, commandParms, "", "open", "1");
        }

我通过这种方式调用,在本地IIS上也是可以的,但是到服务器上点了也没有反应了

支持(0) 反对(0) 翟中龙 | 园豆:97 (初学一级) | 2014-03-26 10:31

@翟中龙: 本地可以的话,说明程序是没问题的,放到服务器上面,看看你本地可以不。我的在本地可以,服务器上面就可以了,所有也不知道你的问题在哪

支持(0) 反对(0) 清海扬波 | 园豆:823 (小虾三级) | 2014-03-26 13:28
1

这个自定义协议即可,mailto:怎么打开了你本地的默认邮件客户端? 国内的什么 pps之类的客户端,为什么从网页可以打开本机程序? 都是自定义协议。 具体解决方案自己搜

码尔代夫iimax | 园豆:3138 (老鸟四级) | 2014-03-26 13:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册