浏览器禁止直接执行.exe文件的主要原因是出于安全考虑。
这样的限制是为了防止恶意软件利用浏览器的漏洞或用户的不慎而在用户计算机上执行恶意代码。
有没办法不改变浏览器的安全性前提下,从浏览器执行Exe文件?
先看个效果全部源码1、编制C#控制台应用程序,使用Nancy框架创建一个简单的Web服务,并在控制台中监听用户输入。
Nancy 是一个轻量级、简单的框架,可以跨平台,在 .NET Framework/Core 和 Mono 上构建基于 HTTP 的服务。
Nancy 旨在处理 DELETE 、 GET 、 HEAD 、 OPTIONS 、 POST 、 PUT 请求,并提供简单、优雅的领域特定语言 (DSL),只需按几次键即可返回响应。
public static void Main(string[] args)
{
Console.WriteLine("web服务已启动!");
using (NancyHost host = new NancyHost(new Uri("http://localhost:12345")))
{
host.Start();
while (true)
{
if (Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.Enter)
break;
System.Threading.Thread.Sleep(100);
}
}
}
2、编制Nancy模块,用于处理Web服务中的请求。
public class Module : NancyModule
{
public Module()
: base("/dhub")
{
// 在处理请求之前执行的操作
Before = nancyContext =>
{
Console.WriteLine(DateTime.Now.ToString() " " Request.Url);
return null;
};
// 处理GET请求,路径为/dhub/home
Get["/home"] = parameters =>
{
return "<meta charset=\"UTF-8\">DHub Demo </br></br>"
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=ping&ip=127.0.0.1'; \" value=\"打开命令 ping 10.14.21.1 (Router)\" />"
"</br></br>"
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=explorer&ip=127.0.0.1'; \" value=\"打开资源管理器 127.0.0.1\" />"
"</br></br>"
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=vncviewer&ip=127.0.0.1'; \" value=\"打开vncviewer 127.0.0.1)\" />";
};
// 处理GET请求,路径为/dhub/open
Get["/open"] = parameters =>
{
string exe = Request.Query["exe"];
string ip = Request.Query["ip"];
Console.WriteLine("exe={0} ip={1} ", exe, ip);
if (exe != null && ip != null)
{
if (exe.ToLower() == "explorer")
Process.Start(string.Format(@"\\{0}\共享", ip));
if (exe.ToLower() == "vncviewer")
Process.Start(Path.Combine(Environment.Is64BitProcess ? "x64" : "x86", "vncviewer.exe"), string.Format("{0} -password PASSWORD", ip));
if (exe.ToLower() == "ping")
Process.Start(@"ping", string.Format("-t {0}", ip));
}
// 返回一个消息并重定向到/dhub/home页面
return "open</br><script language = \"javascript\"> window.location.href = \"http://localhost:12345/dhub/home\"</script>";
};
}
}
3、启动项目
注意:启动visual Studio必须是管理员权限,否则弹出以下错误。
正常启动如下:
4、打开浏览器,输入地址:http://localhost:12345/dhub/home
执行ping
http://ocalhost:12345/dhub/open?exe=ping&ip=127.0.0.1
打开资源管理器
http://localhost:12345/dhub/open?exe=explorer&ip=127.0.0.1
打开任意的exe:vncviewer
http://localhost:12345/dhub/open?exe=vncviewer&ip=127.0.0.1