apache通过cgi调用exe程序

windows下,使用c写了一个简单的cgi程序,生成exe类型的可执行文件,代码如下:

1 #include<stdio.h>
2 int main()
3 {
4     printf("Content-Type:text/html\n\n");
5     printf("Hello,world!\n");
6     return 0;
7 }

怎样使apache加载生成的exe文件?只需要两步即可实现:

1、配置cgi程序所在目录

2、使apache能该识别exe文件

对应到apache的配置文件分别为:

A:

<IfModule alias_module>代码块中增加:

ScriptAlias /cgi-bin/ "E:/c/"

红色字体为cgi程序(此处指生成的exe文件)所在的目录

注意:需要修改两处,在该代码块下方不远处也有一个地方需要修改,如下:

1 <Directory "E:/c">
2     AllowOverride None
3     Options None
4     Order allow,deny
5     Allow from all
6 </Directory>

B:

<IfModule mime_module>代码块中修改或者增加如下两行:

AddType text/html .exe
AddHandler cgi-script .exe .cgi

假如生成的exe文件名为:test.exe

此时将test.exe拷贝到E:\C目录下,并重启apache。

浏览器中运行http://localhost/cgi-bin/test.exe,此时若看到Hello,world!则说明,配置成功。

扩展:

在c语言中接受get、post数据,范例如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 int main()
 5 {
 6     char *data;
 7     long m,n;
 8
 9     printf("Content-Type:text/html\n\n");
10     printf("<title>c语言生成html</title>");
11
12     data = getenv("QUERY_STRING");
13     if(NULL == data)
14         printf("<p>Error.</p>");
15     else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!= 2)
16         printf("<p>Please input number.</p>");
17     else
18         printf("<p>m:%ld;n:%ld.</p>",m,n);
19     return 0;
20 }
时间: 2024-10-11 08:01:24

apache通过cgi调用exe程序的相关文章

[转]自定义URL Protocol Handler,从网页调用EXE程序

转自:http://www.cnblogs.com/zjneter/archive/2008/01/08/1030066.html 迅雷,电驴等软件可以在浏览器中点击一个url后自动启动,并执行操作.这是咋实现的呢? 要实现这个功能笼共分3步.(我们注册一个xishui:// 这样的 protocol-handler,实现在网页中点击xishui://hello,就弹出一个对话框,上面显示"hello")1 按照如下结构建立注册表  其中 [xishui] 是建立在注册表的 [HKEY

python3调用exe程序编写cve20190708批量检测工具

1.python3调用exe程序编写cve20190708批量检测工具 工具下载地址: https://www.qianxin.com/other/CVE-2019-0708 由于这个exe程序只是单IP扫描版本,于是使用python3修改为批量扫描脚本版本 #!/usr/bin/python3 #-*- coding:utf-8 -*- #编写环境 windows 7 x64 Notepad++ + Python3.5.0 import os import sys def main(): #需

C#调用Exe程序示例

在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Process类在System.Diagnostics包中. 示例一 using System.Diagnostics; Process p = Process.Start("notepad.exe"); p.WaitForExit();//关键,等待外部程序退出后才能往下执行 通过上述代码可以调用记事本程序,注意如果不是调用系统程序,则需要输入全路径. 示

.net调用.exe程序

1. 较为简单的.exe程序可采用进程调用 Process.Start("D:\\emr\\emras.exe", para); 解析:参数1为.exe的存放路径,参数2为.exe的执行参数 2. 如果.exe程序中还有其他调用,则上述方法可能在运行过程中报错. 这种情况下,可采用直接调用cmd的执行方式 [DllImport("kernel32.dll")]public static extern int WinExec(string exeName, int o

使用java代码调用exe程序 (包括参数传递)

使用Java代码调用exe 1使用场景 我现在使用eclipse+tomcat的架构建立了web server, 在这个web project中我需要建立一个定时任务,在定时任务中执行本地的一个C#工程生成的exe. 2Java代码 public class MyTask extends TimerTask { public void run() { System.out.println("call at " + (new Date())); // TODO æ­¤å¤?æ·»å? å

C# 如何以参数的形式调用.exe程序

System.Diagnostics.Process.Start("程序的路径", "参数1 参数2");第一个参数是aaa.exe 的路径,第二个参数是用空格分开的两个参数组成的字符串.aaa.exe中的main方法写做static void Main(string[] args)用Process.Start启动aaa.exe时main方法的args参数就是Process.Start传入参数用转换成的长度为2的数组 参考 C#中怎么用process调用一个exe文

Js调用exe程序方法

(通过URL Protocol实现网页调用本地应用程序) 1.使用记事本(或其他文本编辑器)创建一个protocal.reg文件,并写入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Webshell] @="URL:Webshell Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\Webshell\Defaul

6 Runtime类调用exe程序

package com.bowen.dong; import java.io.IOException; import java.util.Properties; import java.util.Set; /** * * @author bw * */ public class Test { public static void main(String[] args) throws IOException, InterruptedException { //获取Runtime类对象,注意不能ne

python 调用exe程序

#!/usr/bin/python #-*- coding:utf-8 -*- import os, subprocess import tkMessageBox import msg_box def get_path_from_disk(process_name):     for path in path_list:         for dirpath, dirnames, filenames in os.walk(path):             for file in filen