.net怎么实现web调用windows上的软件或者服务?

雪之翼 2014-07-30 11:30:59
想类似QQ和旺旺的那种功能,在页面上点击按钮,可以把客户端已经安装的某个winform程序或windows服务呼唤出来。
百度了一些资料,用VS调试的时候可以实现操作windows服务,把站点放到IIS,就不能失效了

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.CreateNoWindow = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.StandardInput.WriteLine("sc start service1");
p.StandardInput.WriteLine("exit");
p.WaitForExit();
p.StandardOutput.ReadToEnd();
...全文
190 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 2014-07-30
  • 打赏
  • 举报
回复
请问...服务是什么 服务又不是窗体. 好吧我承认他也是exe 但是你启动毫无意义. 那是服务又不是窗体.. 我不知道你要干什么 比如 你要停止某个服务 你可以写一个exe 停止服务 然后网页在调用你这个exe就行了....
雪之翼 2014-07-30
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
网页调用本地application 已经跟asp.net没任何关系了.. 常规的 就ocx使用JavaScript调用 不过 一般来说不这样用..我们依然可以自己玩 我们假设一个

<a href="">启动本地QQ</a>
你点击之后 要启动QQ 前提你是安装了QQ. 那么安装QQ的时候 他会自动写入注册表里

            var rootName = "ZOpenClientFile";
            var root = Registry.ClassesRoot;
            root.CreateSubKey(rootName + "\\DefaultIcon");
            root.CreateSubKey(rootName + "\\Shell");
            root.CreateSubKey(rootName + "\\Shell\\Open");
            root.CreateSubKey(rootName + "\\Shell\\Open\\Command");
            var a = root.OpenSubKey(rootName, true);
            a.SetValue("", "");
            a.SetValue("URL Protocol", full);
            var b = root.OpenSubKey(rootName + "\\DefaultIcon", true);
            b.SetValue("", full);
            var c = root.OpenSubKey(rootName + "\\Shell\\Open\\Command", true);
            c.SetValue("", "\"" + full + "\"" + " %1");
            root.Close();
正常我们的超链接都是这样的 http:// 但是我们写到注册表里东西了. 所以我们使用ZOpenClientFile 比如

<a href="ZOpenClientFile://1">启动本地QQ</a>
那么就会自动打开注册表ZOpenClientFile对应的 full 的路径了.. 当然了 会弹出一个提示.不过点击确定就OK了. 很多迅雷下载或者网页游戏带mini客户端 都是采用这种方式.. 不信你看看迅雷下载地址 为什么会打开本地迅雷 一样的道理.
如果我想调用客户我安装的window服务上面方法一样可以 吗?
LINDDYA 2014-07-30
  • 打赏
  • 举报
回复
学习了。。。。
DanielTangram 2014-07-30
  • 打赏
  • 举报
回复
2楼说得对,使用 “网页接口协议”解决。
dongdongdongJL 2014-07-30
  • 打赏
  • 举报
回复
明白!学习了!
by_封爱 2014-07-30
  • 打赏
  • 举报
回复
网页调用本地application 已经跟asp.net没任何关系了.. 常规的 就ocx使用JavaScript调用 不过 一般来说不这样用..我们依然可以自己玩 我们假设一个

<a href="">启动本地QQ</a>
你点击之后 要启动QQ 前提你是安装了QQ. 那么安装QQ的时候 他会自动写入注册表里

            var rootName = "ZOpenClientFile";
            var root = Registry.ClassesRoot;
            root.CreateSubKey(rootName + "\\DefaultIcon");
            root.CreateSubKey(rootName + "\\Shell");
            root.CreateSubKey(rootName + "\\Shell\\Open");
            root.CreateSubKey(rootName + "\\Shell\\Open\\Command");
            var a = root.OpenSubKey(rootName, true);
            a.SetValue("", "");
            a.SetValue("URL Protocol", full);
            var b = root.OpenSubKey(rootName + "\\DefaultIcon", true);
            b.SetValue("", full);
            var c = root.OpenSubKey(rootName + "\\Shell\\Open\\Command", true);
            c.SetValue("", "\"" + full + "\"" + " %1");
            root.Close();
正常我们的超链接都是这样的 http:// 但是我们写到注册表里东西了. 所以我们使用ZOpenClientFile 比如

<a href="ZOpenClientFile://1">启动本地QQ</a>
那么就会自动打开注册表ZOpenClientFile对应的 full 的路径了.. 当然了 会弹出一个提示.不过点击确定就OK了. 很多迅雷下载或者网页游戏带mini客户端 都是采用这种方式.. 不信你看看迅雷下载地址 为什么会打开本地迅雷 一样的道理.
popcat007 2014-07-30
  • 打赏
  • 举报
回复
你这代码在服务器端跑还行,放到客户端跑就不灵了 在web客户端运行的思路是这样的: 怎么着也要先检查一下有没有安装吧; 安装了之后也知道路径吧; 知道路径之后才有可能运行 这个一般都要写成单独active的控件,自动加载或者点击按钮事件加载,不然一些浏览器因为安全因素不给通过

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧