| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1693 人关注过本帖
标题:[原创]困扰---代理服务器的设置(利用注册表)
取消只看楼主 加入收藏
zzcko
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
收藏
 问题点数:0 回复次数:2 
[原创]困扰---代理服务器的设置(利用注册表)
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 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();
}
}
}

搜索更多相关主题的帖子: 代理服务器 注册表 困扰 中国 
2007-08-21 07:24
zzcko
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
收藏
得分:0 

上面的程序随然可以跑,但是有点绕远路的确良嫌疑.
在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的结果。

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

2007-08-21 11:12
zzcko
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
收藏
得分:0 

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

2007-08-24 07:22
快速回复:[原创]困扰---代理服务器的设置(利用注册表)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021925 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved