??xml version="1.0" encoding="utf-8" standalone="yes"?>
另外一个 ?a href="/emu/archive/2006/09/21/62318.html#70988">http://www.tkk7.com/emu/archive/2006/09/21/62318.html#70988
]]>
http://jspackager.sourceforge.net/doc/userguide/
你可以在array中添加items:
但是你在声明时对索引不做数量限制Q你可以通过它的名字讉Kq个JS对象中的M成员,pq样Q创Z个空的对象,然后可以不停地d了:
在JS中,对象和关pd数组QhashesQ两个概念通常是没有区别,下面的这两行代码是等LQ?br />
{了q么久,我可以拥有自qClass了么Q?br />OO的强大力量来自于cClass。当然了我们的JavaScript同样也可以做到这一点,L?
//字W串实际长度
String.prototype.Tlength = function(){var arr=this.match(/[^\x00-\xff]/ig);return this.length+(arr==null?0:arr.length);}
//字符串左?br />String.prototype.left = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(0,num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(0,num);}
//字符串右?br />String.prototype.right = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(this.length-num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(this.length-num);}
//字符串包?br />String.prototype.GetCount = function(str,mode){return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");}
//字符串去除两端空字符
String.prototype.Trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"");}
String.prototype.Ltrim = function(){return this.replace(/(^\s*)/g, "");}
String.prototype.Rtrim = function(){return this.replace(/(\s*$)/g, "");}
document.write("'aa啦啦aa'.Tlength() = " + "aa啦啦aa".Tlength());
document.write("<br>");
document.write("'aabbcc'.Tlength() = " + "aabbcc".Tlength());
document.write("<br>");
document.write("'aa啦啦aa'.left(4) = " + "aa啦啦aa".left(4));
document.write("<br>");
document.write("'aa啦啦aa'.left(4,true) = " + "aa啦啦aa".left(4,true));
document.write("<br>");
document.write("'aa啦啦aa'.right(4) = " + "aa啦啦aa".right(4));
document.write("<br>");
document.write("'aa啦啦aa'.right(4,true) = " + "aa啦啦aa".right(4,true));
document.write("<br>");
document.write("'abAcae'.GetCount('a') = " + "abAcae".GetCount("a"));
document.write("<br>");
document.write("'abAcae'.GetCount('a',true) = " + "abAcae".GetCount("a",true));
document.write("<br>");
document.write("' abc de '.Ltrim() = " + " abc de ".Ltrim());
document.write("<br>");
document.write("' abc de '.Rtrim() = " + " abc de ".Rtrim());
document.write("<br>");
document.write("' abc de '.Trim() = " + " abc de ".Trim());
</script>
代码2:
/*Number Object*/
if(!Number.prototype.toFixed) {
Number.prototype.toFixed = function(n) {
with(Math) return round(Number(this)*pow(10,n))/pow(10,n)
}
}
/*Array Object*/
if (!Array.prototype.pop) {
Array.prototype.pop = function() {
var lastElement = this[this.length-1];
this.length = Math.max(this.length-1,0);
return lastElement;
}
}
if (!Array.prototype.push) {
Array.prototype.push = function() {
for(var i=0;i<arguments.length;i++) {
this[this.length]=arguments[i];
}
return this.length;
}
}
if (!Array.prototype.shift) {
Array.prototype.shift = function() {
var firstElement = this[0];
this.reverse();
this.pop();
this.reverse();
return firstElement;
}
}
if (!Array.prototype.splice) {
Array.prototype.splice = function() {
var start = arguments[0];
var deleteCount = start+arguments[1];
var deleteItem = this.slice(start,deleteCount);
var beforeItem = this.slice(0,start);
var afterItem = this.slice(deleteCount);
this.length=beforeItem.length;
var i;
for (i=2;i<arguments.length;this[this.length]=arguments[i++]);
for (i=0;i<afterItem.length;this[this.length]=afterItem[i++]);
return deleteItem;
}
}
if (!Array.prototype.unshift) {
Array.prototype.unshift = function() {
var arr = new Array();
for (var i=0;i<arguments.length;arr[i]=arguments[i++]);
arr = arr.concat(this);
this.length = 0;
for (i=0;i<arr.length;this[i]=arr[i++]);
}
}
代码3:
function getCookie(mainKey,subKey) {
var reg = new RegExp("(^| )"+mainKey+"=([^;]*)(;|$)");
var arr = document.cookie.match(reg);
if (arguments.length == 2) {
if (arr!=null)
return key(subKey,arr[2]);
else
return null;
} else if (arguments.length == 1) {
if (arr!=null)
return unescape(arr[2]);
else
return null;
}
function key(subKey,findWith) {
var arr,reg = new RegExp("(^| |&)"+subKey+"=([^&]*)(&|$)");
var findWith = findWith?findWith:document.cookie;
if (arr = findWith.match(reg))
return unescape(arr[2]);
else
return null;
}
}
function getQuery(name) {
var reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
var r = location.search.substr(1).match(reg)
if (r!=null) return unescape(r[2]);
}
function DateAdd(strInterval, NumDay, dtDate) {
var dtTmp = new Date(dtDate);
if (isNaN(dtTmp)) dtTmp = new Date();
switch (strInterval) {
case "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));
case "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));
case "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));
case "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));
case "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));
case "m":return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case "y":return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
}
}
// DateDiff("m","2002/12/1 00:00:00","2004/12/1 00:00:00")
function DateDiff(strInterval, dtStart, dtEnd) {
var dtStart = new Date(dtStart);
if (isNaN(dtStart)) dtStart = new Date();
var dtEnd = new Date(dtEnd);
if (isNaN(dtEnd)) dtEnd = new Date();
switch (strInterval) {
case "s":return parseInt((dtEnd - dtStart) / 1000);
case "n":return parseInt((dtEnd - dtStart) / 60000);
case "h":return parseInt((dtEnd - dtStart) / 3600000);
case "d":return parseInt((dtEnd - dtStart) / 86400000);
case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
}
}
// b2s("11新浪|?@#E序员_+}{:><")
function b2s(strng) {
var Matches = strng.match(/[\x21-\x7e]/g);
for (var i=0;i<Matches.length;i++) {
strng = strng.replace(Matches[i],String.fromCharCode(Matches[i].charCodeAt (0)+65248))
}
return strng;
}
出处:http://bbs.blueidea.com/viewthread.php?tid=716195&page=
W者发现现在介l注册表的书c的重点内容都讲解注册表关于个性化讄和系l优化等部分Q而对于现实网l环境下日益猖獗的“黑客”行为、木马病毒以及那些o人恶心的恶意|站却关注甚。笔者在此就注册表有兛_全内容略加阐qͼ希望能v抛砖引玉之效?br />
一、注册表与“黑客”行?br />
“黑客”利用注册表主要包括Q?br />
AQ突破部分网Y仉?br />
BQ共享特定硬盘分区ƈq行指定E序
CQ启动黑客程序等三方面,而其中又属B、C两方面危完大?br />
1、突破部分网Y仉?br />
现在行的网Y件基本上都可以对PC机采取隐藏桌面和盘特定分区、禁止修改IE览器、隐藏“开始”工hQ封锁注册表~辑器regedit.exe{诸多限Ӟ有的|吧理员甚臛_了变态的地步。于是“自q战士”便开始利用注册表q行大突围?br />
Word也可以给注册表解锁?没错Q我们利用的是微软在Word中提供的“宏”,没想到吧Q具体方法是Q运行WordQ然后编写如下面所C的q个“Unlock”宏Q即可给注册表解锁:
Sub Unlock()
Dim RegPath As String
RegPath = “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System?br />
System.PrivateProfileString(FileName:=“?Section:=RegPath,Key:=“Disableregistrytools?=“OK!?br />
End Sub
③用JavaScript、VBScript脚本语言解锁
脚本语言解锁注册表,q个没的_很多恶意|站是靠它来锁住我们的注册表,现在我们反其道行之用它来解锁注册表。这里只l出JavaScript的核心代码。用C本编辑如下内容的文gQ保存ؓ?js为后~名的L文gQ用时双击可以了?br />
VAR WSHShell=WSCRIPT.CREA-TOBJEt(“WSCRIPT.SHELL?;
WSHShell.Popup(“解锁注册表?;
WSHShell.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\
system\\DisableRegistryTools? 0,“reg_dword?;
需要注意:用JS寚wD行操作时要用两斜杠“\\”,q且要用?”表C结?
④利用SCR文gl注册表解锁
众所周知QSCR文g是屏保文ӞSCR文g如何用来解锁注册表呢Q方法是注册表~辑器regedit.exe改名为Regedit.scr。然后,在桌面上点击鼠标右键Q在弹出菜单中选择“属性”,在弹出的“显C属性”对话框中选中“屏q保护程序”,在“屏q保护程序”下拉列表框中找到Regeditq个“屏保文件”(?Q,最后点几Z预览”按U,你会发现注册表编辑器成功地打开了。再更改相关键|重启计算机后可以给注册表解锁了Q(记着把SCR文g改回哦!Q?br />
⑤用INF文g解锁
在Windows中有一U后~为INF的驱动安装文Ӟ它实际上是一U脚本语aQ通过解释来执行。它包含了设备驱动程序的所有安装信息,其中也有涉及修改注册表的相关语句Q所以我们也可以利用INF文gҎ册表解锁?br />
[Version]
Signature=?CHICAGO$?br />
[DefaultInstall]
DelReg=UnLock
[UnLock]
HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\
System,Disableregistrytools,
1,00,00,00,00
上面的内容另存为后~名是.inf的文Ӟ使用时只要右键点dQ在弹出菜单中选择“安装”即可给注册表解锁(如图2Q?br />
首先我们打开C本编辑reg文g如下Q?br />
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
\CurrentVersion\Network\Lanman\C$]
//q里我只׃n了C盘,需要的可以再加
“Path?”C:\\?br />
“Remark?“ ?br />
“Type?dword:00000000
“Flags?dword:00000192
“Parm1enc?hex:
“Parm2enc?hex:
然后另存为ShareDrives.reg文g。 再打开C本,键入以下内容Q?br />
[AutoRun]
open=regedit /s ShareDrives.reg // q里/s参数作用是导入注册表信息不显CZQ何提C?br />
再另存ؓAutoRun.inf文g?br />
这两个文g复制到对方共享出来的驱动盘根目录下,此后只要双击׃n出来的驱动盘׃自动ShareDrives.reg文g导入注册表,Ҏ重启pȝ后C盘也共享出来了。试xQ我们如果在 “open=…”句后添上木马名q将已配|好的木马服务端一起复制过去,以后会怎样Q?br />
那么如何对付q种d呢?因ؓ盘根目录下基本不需要AutoRun.inf文g来运行程?因此我们可以采用一个一x逸的办法是硬盘的AutoRun功能完全关闭Q这样即使硬盘根目录下有AutoRun.inf文gQ操作系l也不会q行指定的程序。Win98ZQ打开注册表编辑器Q找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]主键Q在注册表编辑器右侧框中可以看到有二q制值“NoDriveTypeAutoRun?最后只需要将其数据数值由默认的?5 00 00 00”改为?d 00 00 00”就可以了。其原理我就不在讲解了?br />
3、启动黑客程?br />
利用注册表启动黑客程序,目的是想每次开机启动时自动q行黑客E序Q这同时也是很多木马病毒自启动常用的Ҏ之一。普遍的Ҏ是在黑客程序名及参数添加到注册表相应的键gQ这样一来,每次开机时计算机将自动加蝲相应的注册表,q而黑客E序辑ֈ帔R内存的目的。另外还有更为隐蔽的Ҏ会在“注册表与木马病毒”部分详l介l?br />
下面我们打开注册表编辑器Q查看:
HKEY_LOCAL_MACHINE\Software\Microsoft
\Windows\CurrentVersion下所有以“run”开头的键|
HKEY_CURRENT_USER\Software\Microsoft
\Windows\CurrentVersion下所有以“run”开头的键|
HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键倹{?br />
如果发现未知不明的键|可很有可能就是非法植入的E序?br />
二、注册表与病?br />
下面我们来看看病毒是如何利用注册表的。一般,病毒会利用注册表来得到系l的基本信息Q例如操作系l类型、系l安装的服务E序、IE、OutLook{应用Y件的版本信息{等。这主要是ؓ了探系l及软g本n的漏z然后加以利用。更主要的,病毒是想通过注册表实现黑客程序一L目的——开启,帔R内存。只有这P病毒才能感染其他机器和文Ӟ才有Zq行“破坏”?br />
打开注册表编辑器Q我们找刎ͼ
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键|
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键|
HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键倹{?br />
大部分病毒都会悄悄的在上qC个位|安家。这时我们只需要删除相应的键值再删除掉病毒程序就可以了?br />
此外Q病毒还可以把自己注册ؓpȝ服务来达到更为隐蔽的开启的目的。其基本原理是利用在WIN2K中,“启动类型”设|ؓ“自动”的服务Q启动时pȝ׃自动q行Q所以,病毒只需自w添加到pȝ服务中,q将“启动类型”设|ؓ“自动”就可以每次启动pȝ旉自动q行病毒E序。其在注册表中的位置如下Q [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ServiceName\Parameters]
“Application? “C:\\winnt\\system32\\ ServiceName.exe
其中QServiceName是病毒名?br />
不过病毒自w注册ؓpȝ的“服务”程序还有一个缺点,是在“系l配|实用程序”(在“开始→q行”中执行“Msconfig”)的“启动”项和“服务”项中可以看得到。那么有没有比这更隐蔽的Ҏ呢?{案是肯定的。在“开始→q行”中执行“Gpedit.msc”。 打开“组{略”,可看到“本地计机{略”中有两个选项Q“计机配置”与“用户配|”,展开“用户配|→理模板→系l→d”,双击“在用户d时运行这些程序”子进行属性设|,选定“设|”项中的“已启用”项q单几Z显C”按钮弹出“显C内容”窗口,再单几Z添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的E序的\径,单击“确定”按钮就完成了。如?所C:
其实恶意|站所使用的技术ƈ不复杂,只要懂一点JavaScript、VBScript脚本语言~程和ActiveX控g原理可以。所以在q我׃一一列DQ而是重点介绍一下如何在技术上防范和杜l这些恶意网站?br />
常用Ҏ是在IE讄中将ActiveX插g和控件、Java脚本{全部禁止。方法是Q打开IEQ点击[工具]→[Internet选项]→[安全]→[自定义别]Q在“安全设|”对话框中,其中所有的ActiveX插g和控件以及与Java相关的组件全部禁止即可。如? 所C:
另外我们q可以卸载WSH或升U到WSH5.6。WSH(Windows Script Host)是微软提供的一U基?2位Windowsq_的、与语言无关的脚本解释机制。利用WSHQ用戯够操UWSH对象、ActiveX对象、注册表和文件系l,在NT环境下还可以利用WSH讉Kzd目录服务?br />
卸蝲ҎQ进入“控刉李쀝,选择“添?删除E序”,切换到“Windows安装E序”,选择“附件”,再选择“详l资料”中的Windows Scripting HostQ最后点几Z确定”即可卸载?br />
其实Qؓ了避免Windows对脚本不加限制的滥用Q微软ؓWSH5.6采用了一U新的安全模型,使得脚本用户在运行脚本之前验证其真实性。脚本开发h员对其脚本进行签名,以免发生未经授权的修攏V管理员可以强制实施严格的策略,定哪些用户有权在本地或q程q行脚本。在Windows 2000中,{验证{略是通过“本地安全策略”编辑器讄的。签名验证策略注册表位于以下配|单元:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows ScriptHost\Settings\TrustPolicyQ该注册表项讄Z下某个REG_DWORD|如果?则运行所有的脚本Q如果认本不可信Q则提示用户Q此旉值可设ؓ1Q如果键gؓ2则只q行可信脚本。徏议将该DWORDD??br />
四、小l?br />
有关注册表与安全的话题笔者就讲到q,W者只是指Zq个安全话题的冰׃角,q有很多安全问题׃旉和篇q的限制׃再一一说明Q例如防范共享入侵和止I接,防止ICMP重定向报文的dQ防止SYNz水d{等很多l典的安全问题都和注册表息息相连。笔者只是希望就此话题引起大家够认识,q且在以后实际工作、学习中遇到问题能够拓开思\Q灵zd变。最后需指出Q技术只是解决问题的一个方面,对h的管理很多时候更为重要!
来源Q?a >天极|Yesky
|
Q责ȝ辑:陈健
|
如果你想出门Q但电脑又正在进行工作,q时p用到自动x。大多数实现自动x的方法都是用一些第三方软gQ这样不仅麻烦,而且为实现这个小功能而专门动用一个YӞ昄题大做了!其实Windows XP(Windows 2000也可?自n具备定时关机的功能Q下面我们就来看看如何实现Windows XP的自动关机?/p>
Windows XP的关机是由Shutdown.exeE序来控制的Q位于WindowsQSystem32文g夹中
。如果想让Windows 2000也实现同L效果Q可以把Shutdown.exe复制到系l目录下。
比如你的电脑要在22:00xQ可以选择"开始→q行"Q输?at 22:00 Shutdown -s"Q这PC22点电脑就会出?pȝx"对话框,默认?0U钟的倒计时ƈ提示你保存工作。如果你想以倒计时的方式xQ可以输?Shutdown.exe -s -t 3600"Q这里表C?0分钟后自动关机,"3600"代表60分钟?
讄好自动关机后Q如果想取消的话Q可以在q行中输?shutdown -a"。另外输?shutdown -i"Q则可以打开讄自动x对话框,对自动关行设|。
Shutdown.exe的参敎ͼ每个都具有特定的用途,执行每一个都会生不同的效果Q比?-s"pC关闭本地计机Q?-a"表示取消x操作Q下面列Z更多参数Q大家可以在Shutdown.exe中按需使用?
-fQ强行关闭应用程?
-m Q|计算机名Q控制远E计机
-iQ显C图形用L面,但必LShutdown的第一个选项
-lQ注销当前用户
-rQ关机ƈ重启
-t旉Q设|关机倒计?
-c "消息内容"Q输入关机对话框中的消息内容(不能?27个字W?