当前位置: 代码迷 >> C语言 >> [原创]困扰---代理服务器的设置(利用注册表)
  详细解决方案

[原创]困扰---代理服务器的设置(利用注册表)

热度:251   发布时间:2007-08-21 07:24:04.0
[原创]困扰---代理服务器的设置(利用注册表)
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: zzcko
*/ 时间: 2007-8-21 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


以下的程序是编译通过的(在WIN-TCH上)


/* Agent server setting *
* --------@author zzc */

#include "Stdio.h"
#include "Stdlib.h"
#include "Caonio.h"
#include "time.h"

void setting()
{
char *p,*q;
char t1[20]="\"",t2[20]="\"";
char str1[20];
char str2[10];
char str3[200]="echo \"ProxyServer\"=\"";
p=str1;
q=str2;
system("cls");
printf("Please input agent server IP address(Default 10.38.84.248):");
gets(str1);
if(strlen(str1)==0)
p="10.38.84.248";
printf("Please input port number(Default 808):");
gets(str2);
if(strlen(str2)==0)
q="808";
strcat(str3,p);
strcat(str3,":");
strcat(str3,q);
strcat(str3,"\" >>set.reg");
system("echo Windows Registry Editor Version 5.00 >set.reg");
system("echo.>>set.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Control Panel] >>set.reg");
system("echo \"Proxy\"=dword:00000000 >>set.reg");
system("echo.>>set.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings] >>set.reg");
system("echo \"ProxyEnable\"=dword:00000001 >>set.reg");
system(str3);
system("echo.>>set.reg");
system("echo.>>set.reg");
system("reg import set.reg");
system("del set.reg");
printf("Press any key return main menu!");
getch();
}

void unset()
{
system("cls");
system("echo Windows Registry Editor Version 5.00 >unset.reg");
system("echo.>>unset.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Control Panel] >>unset.reg");
system("echo \"Proxy\"=dword:00000001 >>unset.reg");
system("echo.>>unset.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings] >>unset.reg");
system("echo \"ProxyEnable\"=dword:00000000 >>unset.reg");
system("echo \"ProxyServer\"=\" : \" >>unset.reg");
system("echo.>>unset.reg");
system("echo.>>unset.reg");
system("reg import unset.reg");
system("del unset.reg");
printf("Press any key return main menu!");
getch();
}

void main()
{
int sel;
while(1)
{
system("cls");
printf("Agent server setting\n\t\t ---@Author ZZC\n\n1.Agent server setting\n2.Close agent\n3.Exit\n");
scanf("%d",&sel);
switch(sel)
{
case 1:
setting();
break;
case 2:
unset();
break;
case 3:
exit(0);
default :
system("cls");
printf("Please select 1~3!\n");
printf("Press any key return main menu!");
getch();
}
}
}

搜索更多相关的解决方案: 代理服务器  注册表  困扰  中国  

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

上面的程序随然可以跑,但是有点绕远路的确良嫌疑.
在void setting()函数中:

system("echo Windows Registry Editor Version 5.00 >set.reg");
system("echo.>>set.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Control Panel] >>set.reg");
system("echo \"Proxy\"=dword:00000000 >>set.reg");
system("echo.>>set.reg");
system("echo [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings] >>set.reg");
system("echo \"ProxyEnable\"=dword:00000001 >>set.reg");
system(str3);
system("echo.>>set.reg");
system("echo.>>set.reg");
system("reg import set.reg");
system("del set.reg");

这一段的内容的意思是,我先创建一个set.reg文件,然后用reg import命令导入注册表。
但是在reg命令中有个reg add命令可以直接向注册表导入一项,直接向注册表中导入,而不必建文件。所以上面导入可以改成如下样式:

system("reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v proxy /t reg_dword /d 0x0");

但是改成这样后,问题出现了,win-tc编译可以通过,但是在运行时会得到如下结果:

Program too big to fit in memory

后来偶然我把上面那句改成下面的情况:

system("reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet\" /v proxy /t reg_dword /d 0x0");

这样可以完成运行,也可以得到程序表达式所要的结果。即往internet项里写入了proxy值为0x0.
但我要的结果是往internet settings里写入proxy值为0x0.

后来我又做了许多测试,结果证明,只要比HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet的长度长一个字符,就会
产生Program too big to fit in memory的结果。

哪位高人可以解释下为什么吗?有什么好的解决办法?


----------------解决方案--------------------------------------------------------
思路不错,可是,没有 注册表 怎么办

----------------解决方案--------------------------------------------------------

你说的没有注册表是什么意思?windows系统里还有没有注册表的?呵呵...


----------------解决方案--------------------------------------------------------
编程中国原创计划及声明
  • 严肃性
    不求文章要写的多么经典,但一定要是自己的原创。求助、转载、广告等其他类型帖子冒充原创者,视用户等级禁言一段时间或封ID。

  • 本站首发
    原创帖必须是本站首发,在其他站点发布以后在本论坛发布的,我们拒绝承认为原创,一律视为转载。

  • 鼓励原创
    原创帖在发布以后,管理员通过网上划词搜索辨别是否为原创,如确定为原创,只要文章不是过于简陋就会推荐为本版精华,优秀的同时收录至本站技术教程频道。

----------------解决方案--------------------------------------------------------
奇怪,封就封了,为什么这个贴子也会有LS这个回复?难是自动处理回复的?
----------------解决方案--------------------------------------------------------
这个论坛的程序很奇怪,貌似很强大。。。

哪天管理员开源,让大家学习下~~~~`
----------------解决方案--------------------------------------------------------
[QUOTE]8
[/QUOTE]
----------------解决方案--------------------------------------------------------

[QUOTE]第 8 楼 这个论坛的程序很奇怪,貌似很强大。。。

哪天管理员开源,让大家学习下~~~~`[/QUOTE]

真的貌似很强大唉。。。


----------------解决方案--------------------------------------------------------