2001.01
01

Windows开始→运行→命令集锦

IDEA写于2001年01月01日 星期一 1:01 am

windows开始→运行→命令集锦

winver———检查Windows版本
wmimgmt.msc—-打开windows管理体系结构(WMI)
wupdmgr——–windows更新程序
wscript——–windows脚本宿主设置
write———-写字板
winmsd———系统信息
wiaacmgr——-扫描仪和照相机向导
winchat——–XP自带局域网聊天

mem.exe——–显示内存使用情况
Msconfig.exe—系统配置实用程序
mplayer2——-简易widnows media player
mspaint——–画图板
mstsc———-远程桌面连接
mplayer2——-媒体播放机
magnify——–放大镜实用程序
mmc————打开控制台
mobsync——–同步命令

dxdiag———检查DirectX信息
drwtsn32—— 系统医生
devmgmt.msc— 设备管理器
dfrg.msc——-磁盘碎片整理程序
diskmgmt.msc—磁盘管理实用程序
dcomcnfg——-打开系统组件服务
ddeshare——-打开DDE共享设置
dvdplay——–DVD播放器

net stop messenger—–停止信使服务
net start messenger—-开始信使服务
notepad——–打开记事本
nslookup——-网络管理的工具向导
ntbackup——-系统备份和还原
narrator——-屏幕“讲述人”
ntmsmgr.msc—-移动存储管理器
ntmsoprq.msc—移动存储管理员操作请求
netstat -an—-(TC)命令检查接口

syncapp——–创建一个公文包
sysedit——–系统配置编辑器
sigverif——-文件签名验证程序
sndrec32——-录音机
shrpubw——–创建共享文件夹
secpol.msc—–本地安全策略
syskey———系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc—本地服务设置
Sndvol32——-音量控制程序
sfc.exe——–系统文件检查器
sfc /scannow—windows文件保护

tsshutdn——-60秒倒计时关机命令
tourstart——xp简介(安装完成后出现的漫游xp程序)
taskmgr——–任务管理器

eventvwr——-事件查看器
eudcedit——-造字程序
explorer——-打开资源管理器

packager——-对象包装程序
perfmon.msc—-计算机性能监测程序
progman——–程序管理器

regedit.exe—-注册表
rsop.msc——-组策略结果集
regedt32——-注册表编辑器
rononce -p —-15秒关机
regsvr32 /u *.dll—-停止dll文件运行
regsvr32 /u zipfldr.dll——取消ZIP支持

cmd.exe——–CMD命令提示符
chkdsk.exe—–Chkdsk磁盘检查
certmgr.msc—-证书管理实用程序
calc———–启动计算器
charmap——–启动字符映射表
cliconfg——-SQL SERVER 客户端网络实用程序
Clipbrd——–剪贴板查看器
conf———–启动netmeeting
compmgmt.msc—计算机管理
cleanmgr——-垃圾整理
ciadv.msc——索引服务程序

osk————打开屏幕键盘
odbcad32——-ODBC数据源管理器
oobe/msoobe /a—-检查XP是否激活
lusrmgr.msc—-本机用户和组
logoff———注销命令

iexpress——-木马捆绑工具,系统自带

Nslookup——-IP地址侦测器

fsmgmt.msc—–共享文件夹管理器

utilman——–辅助工具管理器

gpedit.msc—–组策略

================

gpedit.msc—–组策略 sndrec32——-录音机
Nslookup——-IP地址侦测器 explorer——-打开资源管理器
logoff———注销命令 tsshutdn——-60秒倒计时关机命令
lusrmgr.msc—-本机用户和组 services.msc—本地服务设置
oobe/msoobe /a—-检查XP是否激活 notepad——–打开记事本
cleanmgr——-垃圾整理 net start messenger—-开始信使服务
compmgmt.msc—计算机管理 net stop messenger—–停止信使服务
conf———–启动netmeeting dvdplay——–DVD播放器
charmap——–启动字符映射表 diskmgmt.msc—磁盘管理实用程序
calc———–启动计算器 dfrg.msc——-磁盘碎片整理程序
chkdsk.exe—–Chkdsk磁盘检查 devmgmt.msc— 设备管理器
regsvr32 /u *.dll—-停止dll文件运行 drwtsn32—— 系统医生
rononce -p —-15秒关机 dxdiag———检查DirectX信息
regedt32——-注册表编辑器 Msconfig.exe—系统配置实用程序
rsop.msc——-组策略结果集 mem.exe——–显示内存使用情况
regedit.exe—-注册表 winchat——–XP自带局域网聊天
progman——–程序管理器 winmsd———系统信息
perfmon.msc—-计算机性能监测程序 winver———检查Windows版本
sfc /scannow—–扫描错误并复原 taskmgr—–任务管理器(2000/xp/2003) winver———检查Windows版本
wmimgmt.msc—-打开windows管理体系结构(WMI) wupdmgr——–windows更新程序
wscript——–windows脚本宿主设置 write———-写字板
winmsd———系统信息 wiaacmgr——-扫描仪和照相机向导
winchat——–XP自带局域网聊天 mem.exe——–显示内存使用情况
Msconfig.exe—系统配置实用程序 mplayer2——-简易widnows media player
mspaint——–画图板 mstsc———-远程桌面连接
mplayer2——-媒体播放机 magnify——–放大镜实用程序
mmc————打开控制台 mobsync——–同步命令
dxdiag———检查DirectX信息 drwtsn32—— 系统医生
devmgmt.msc— 设备管理器 dfrg.msc——-磁盘碎片整理程序
diskmgmt.msc—磁盘管理实用程序 dcomcnfg——-打开系统组件服务
ddeshare——-打开DDE共享设置 dvdplay——–DVD播放器
net stop messenger—–停止信使服务 notepad——–打开记事本 nslookup——-网络管理的工具向导 ntbackup——-系统备份和还原 narrator——-屏幕“讲述人” ntmsmgr.msc—-移动存储管理器 ntmsoprq.msc—移动存储管理员操作请求 netstat -an—-(TC)命令检查接口 syncapp——–创建一个公文包 sysedit——–系统配置编辑器 sigverif——-文件签名验证程序 sndrec32——-录音机 shrpubw——–创建共享文件夹 secpol.msc—–本地安全策略
syskey———系统加密,一旦加密就不能解开, 保护windows xp系统的双重密码
services.msc—本地服务设置 Sndvol32——-音量控制程序
sfc.exe——–系统文件检查器 sfc /scannow—windows文件保护
tsshutdn——-60秒倒计时关机命令 tourstart——xp简介(安装完成后出现的漫游xp程序)
taskmgr——–任务管理器 eventvwr——-事件查看器
eudcedit——-造字程序 explorer——-打开资源管理器
packager——-对象包装程序 perfmon.msc—-计算机性能监测程序
progman——–程序管理器 regedit.exe—-注册表
rsop.msc——-组策略结果集 regedt32——-注册表编辑器
rononce -p —-15秒关机 regsvr32 /u *.dll—-停止dll文件运行
regsvr32 /u zipfldr.dll——取消ZIP支持 cmd.exe——–CMD命令提示符
chkdsk.exe—–Chkdsk磁盘检查 certmgr.msc—-证书管理实用程序
calc———–启动计算器 charmap——–启动字符映射表
cliconfg——-SQL SERVER 客户端网络实用程序 Clipbrd——–剪贴板查看器
conf———–启动netmeeting compmgmt.msc—计算机管理
cleanmgr——-垃圾整理 ciadv.msc——索引服务程序
osk————打开屏幕键盘 odbcad32——-ODBC数据源管理器
oobe/msoobe /a—-检查XP是否激活 lusrmgr.msc—-本机用户和组
logoff———注销命令 iexpress——-木马捆绑工具,系统自带
Nslookup——-IP地址侦测器 fsmgmt.msc—–共享文件夹管理器


2001.01
01

变态级JAVA程序员面试32问

IDEA写于2001年01月01日 星期一 1:01 am

第一,谈谈final,finally,finalize的区别。

第二,AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

第三,StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。

第四,&和&&的区别。

第五,HashMap和Hashtable的区别。

第六,Collection和Collections的区别。

第七,什么时候用assert.

第八,GC是什么?为什么要有GC?

第九,Strings=newString("xyz");创建了几个StringObject?

第十,Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

第十一,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?

第十二,sleep()和wait()有什么区别?

第十三,Java有没有goto?

第十四,数组有没有length()这个方法?String有没有length()这个方法?

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

第十七,给我一个你最常见到的runtimeexception.

第十八,error和exception有什么区别?

第十九,List,Set,Map是否继承自Collection接口?

第二十,abstractclass和interface有什么区别?

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?

第二十三,启动一个线程是用run()还是start()?

第二十四,构造器Constructor是否可被override?

第二十五,是否可以继承String类?

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

第二十七,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

第二十八,编程题:用最有效率的方法算出2乘以8等於几?

第二十九,两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

第三十二,编程题:写一个Singleton出来。

以下是答案

第一,谈谈final,finally,finalize的区别。

final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。

finalize?方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

第二,AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

第三,StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。

NestedClass(一般是C++的说法),InnerClass(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http://www.frontfree.net/articles/services/view.asp?id=704&page=1注:静态内部类(InnerClass)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

第四,&和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

第五,HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。

第六,Collection和Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口。

第七,什么时候用assert.断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true.如果表达式计算为false,那么系统会报告一个AssertionError.它用于调试目的:assert(a>0);//throwsanAssertionErrorifa<=0断言可以有两种形式:assertExpression1;assertExpression1:Expression2;Expression1应该总是产生一个布尔值。

Expression2可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String消息。

断言在默认情况下是禁用的。要在编译时启用断言,需要使用source1.4标记:javac-source1.4Test.java要在运行时启用断言,可使用-enableassertions或者-ea标记。

要在运行时选择禁用断言,可使用-da或者-disableassertions标记。

要系统类中启用断言,可使用-esa或者-dsa标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

第八,GC是什么?为什么要有GC?(基础)。

GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()

Runtime.getRuntime()。gc()

第九,Strings=newString("xyz");创建了几个StringObject?

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s.

第十,Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?

shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1).shorts1=1;s1+=1正确。

第十二,sleep()和wait()有什么区别?搞线程的最爱sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

第十三,Java有没有goto?

Goto?java中的保留字,现在没有在java中使用。

第十四,数组有没有length()这个方法?String有没有length()这个方法?

数组没有length()这个方法,有length的属性。

String有有length()这个方法。

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

第十七,给我一个你最常见到的runtimeexception.ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException

第十八,error和exception有什么区别?

error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

第十九,List,Set,Map是否继承自Collection接口?

List,Set是

Map不是

第二十,abstractclass和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

都不能

第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

第二十三,启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

第二十四,构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading.

第二十五,是否可以继承String类?

String类是final类故不可以继承。

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十七,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return前执行。

第二十八,编程题:用最有效率的方法算出2乘以8等於几?

有C背景的程序员特别喜欢问这种问题。

2<<3

第二十九,两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?

不对,有相同的hashcode.

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte.long,string都不能作用于swtich.

第三十二,编程题:写一个Singleton出来。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

publicclassSingleton{privateSingleton(){}//在自己内部定义自己一个实例,是不是很奇怪?

//注意这是private只供内部调用privatestaticSingletoninstance=newSingleton();//这里提供了一个供外部访问本class的静态方法,可以直接访问publicstaticSingletongetInstance(){returninstance;}第二种形式:publicclassSingleton{privatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance(){//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次//使用时生成实例,提高了效率!

if(instance==null)

instance=newSingleton();returninstance;}}其他形式:定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些第三十三Hashtable和HashMapHashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey.因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。


2001.01
01

Photoshop开门十件事

IDEA写于2001年01月01日 星期一 12:00 am

Adobe Photoshop是目前最流行的平面设计软件之一。可以说,只要你接触平面设计,那么无论早晚,你都要和它打交道。关于Photoshop,要说的实在太多太多,但不论你想让它成为你的左膀右臂,或者仅仅是用它来做一些最基础的图像处理工作,那么下面的10件事都是你一定要知道的,无论你是个初学者或是已经对它有了一定的了解。

  1.快捷键的使用:这是Photoshop基础中的基础,却也是提高工作效率的最佳方法。快捷键的使用,使你可以将精力更好的集中在你的作品而不是工具面板上。一旦你能够熟练的使用快捷键,你就可以使用全屏的工作方式,省却了不必要的面板位置,使视野更开阔,最大限度的利用屏幕空间;一些简单的命令可以用键盘来完成,不必分心在工具的选择上,哪怕它只占用了极少的时间,但我们更希望在工作时不被打断。

  注意:你应该尽量多使用快捷键,下面的这些快捷键是提高效率的好帮手,但不知为什么很多书中都一带而过,甚至没有提及,请一定要牢牢记住。

  Ctrl+J:复制当前图层到一个新层;

  J:切换到喷枪工具;

  M:切换到选框工具;

  [ ]:在当前工具为画笔模式时(包括喷枪、画笔、铅笔、仿制图章历史画笔、橡皮及模糊和加深等工具),依次增减笔头大小;

  Shift+BackSpace:调出填充对话框。

  一开始,你可能无法记住所有的快捷键,可以使用Photoshop的工具提示来帮助你。方法是打开编辑>预置>常规,选择“显示工具提示”。这样,当你把鼠标移动到工具面板上时,工具名称和其快捷键就会出现,直到你移走鼠标才会消失。

  2.无接缝贴图:无论是对3D图像或是网页的制作,无接缝贴图都是很重要的,我们可以在Photoshop中轻易的完成。定制好你的图像后,运行滤镜>其它>位移,在水平和垂直方向上位移,一般设置位移量为图像大小的一半,最重要的是将未定义区域设为折回。在完成位移之后,用橡皮图章工具在图像的拼合处涂抹,消除接缝,然后将图像定义为图案。用这种图案填充,就可以得到无缝的背景图像。

  3.为常用的组合命令定制动作:在处理图像的时侯,很多情况下我们都会用到组合命令。譬如,需要将一个多层图像的文档移动到另一个文档中。最快捷且安全的方法是:新建一层Shift+CTRL+N;拼合以下所有可见图层Shift+Alt+CTRL+E;选择全部图像Ctrl+A;复制CTRL+C;取消选择Ctrl+D;删除当前图层。这组命令是为图像建立一个映象,它包含了当前层之下的所有可见层图像,这时你的剪贴板上已经留下了图像的内容,只要把它粘贴在需要的文档中就可以了。这是个很典型的例子,尽管你可以使用一系列的快捷键来完成这组命令,但还是推荐把它储存为一个动作,在动作选项面板中,你可以为这个动作设置一个方便的功能键,如Shift+F2,这样你随时调用,非常方便,尤其是将图像从Photoshop导入到其它应用程序中的时侯,节约的时间相当可观!Shift,Control和F2到F12这些不同的组合,可以定义不少的动作,大幅度的提高效率。

  4.自动选择图层:相当不起眼的一个小动作,却非常又用,特别是在一些多图层的大型文件中,即使规规矩矩的为每个图层命令,按顺序叠放图层,在选择时也是较为麻烦的——你可能会记不清它们分属哪些图层,而错误操作的后果有时是很可怕的。这时,你可以先选择移动工具,在工具选项中勾选“自动选择图层”,这样,除了切片工具、路径组件选择工具、钢笔工具和抓手工具外,工具箱中的其它工具为当前所选时,按住Ctrl键的同时,当前工具都会暂时变成移动工具,点击画布上的任意对象,Photoshop都会自动转到其所在图层,这样就可以进行操作了。在当前为移动工具时,即使不选择自动选择图层,只要按住Ctrl键,同样可以自由的选择分属不同层的图像内容。

  5.创建自定义笔刷:在Photoshop中有一项很有用但未被大多数人充分利用的资源,那就是创建自定义笔刷。新建一个文档,大小为要制作的笔刷大小,用黑色(也可以是彩色或不同的灰度,但这样制出的画笔颜色会较淡)绘制你的画笔图像,如一朵小花,几颗小树等等。然后用矩形选框选择,定义为新的画笔。如果没有选择,那么Photoshop会把画布上全部图像定义为画笔。这样,你就可以用这些自定义的画笔创作各种独特的图像了,特别是一些边框等装饰性的图案。

  6.镜头光晕效果:在初级的图像处理中,镜头光晕可说是最常用的修饰效果之一。一般情况下,你可以直接在图像中使用滤镜>渲染>镜头光晕,来为图像增加气氛。那么,如果你对某一次的镜头光晕效果非常满意,希望把它保存下来,我们可以利用图层混合的特性。事先在图像上新建一层,用黑色填充,再执行镜头光晕滤镜,然后将这一层的图层混合模式设为“屏幕”,这样,黑色被隐去,你会得到单独的光晕效果图层。不过,这个方法唯一的缺点是,不能在白色的图像上显示。

  7.光照效果滤镜:这个滤镜给人最大的惊喜在于它可以创作出各种各样逼真的纹理效果。最简单的用法是:将一个简单的纹理放置一个通道中,然后对某一层应用滤镜>渲染>光照效果,在纹理通道中选择刚才存储纹理的通道,调整各种相应的光照设置,这样就能得到具有立体感的纹理效果。

  8.使用调整图层:谁也没有把握能够一次就将图像调整的十分完美,所以,除了养成良好的备份习惯之外,最好是能使用调整图层的时侯尽量使用调整图层。你可能会觉得麻烦,但这点麻烦和图像损坏的损失比较起来就微乎其微了。而且更重要的是,你可以在创作过程中随时做出新的调整而不必担心图像的损坏。

  9.快速复制技巧:在同一个文档中,确定当前为移动工具(或暂时为移动工具),按下Alt键的同时,拖移对象,即可复制,按住Shift键,可保证按45度角的倍数移动;在不同的文档间,移动时按住Shift键,如果两个文档的大小相同,则对象复制到新文档的相同的位置,如果文档大小不同,那么对象被复制到新文档的正中。用这种方法复制,不但方便,也可以减少剪贴板的使用,进一步节省系统资源。

  10.成果的积累:当你使用Photoshop一段时间以后,一定会存下来不少好东东。如你千辛万苦调制的渐变、等高线、样式等,还包括一些方便工作的色板等。这些只是暂时保存在Photoshop中的,一旦重装,Photoshop将会恢复到默认状态,变得清洁溜溜,这些自定义的东西会消失的无影无踪。这不但可惜,还会影响到你的工作(如定义好的色板丢失)。所以,最好每有得意之作的时侯就用预设管理器保存下来,存放在专门的文件夹中。预设管理器可以保存画笔、色板、渐变、样式、图案、等高线、自定义形状,这样你的工作成果一样也不会丢失。重装之后,用相应的文件覆盖就可回到熟悉的工作环境中了。 


2000.11
24

ASP常用的函数和说明(转)

IDEA写于2000年11月24日 星期五 9:03 am

1.函数array()
功能:创建一个数组变量
格式:array(list)
参数:list 为数组变量中的每个数值列,中间用逗号间隔
例子:
<% i = array ("1","2","3") %>
结果: i 被赋予为数组

2.函数cInt()
功能:将一表达式/其它类型的变量转换成整数类型(int)
格式:cInt(expression)
参数:expression 是任何有效的表达式/其它类型的变量
例子:
<%
f = "234"
response.write cInt(f) + 2
%>
结果: 236
函数cInt()将字符"234"转换 成整数234.如果表达式为空, 或者无效时,返回值为0;

3.函数:Creatobject()
功能:创建及返回一个ActiveX对象.
格式:Creatobject(obname)
参数bname 是对象的名称
例子:
<%
Set con = Server.CreateObject("ADODB.Connection")
%>
结果:

4.函数cStr()
功能:将一表达式/其它类型的变量转换成字符类型(string)
格式:cStr(expression)
参数:expression是任何有效的表达式/其它类型的变量
例子:
<%
s = 3 + 2
response.write "The result is:" & cStr(s)
%>
结果:函数cStr()将整数 5 转换 成字符"5".

5.函数Date()
功能:返回当前系统(server端)的日期
格式: Date()
参数:无
例子:
<% = date () %>
结果:05/10/00

6.函数Dateadd()
功能:计算某个指定的时间和
格式: dateadd(timeinterval,number,date)
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点.
例子:
<%
currentDate = #8/4/99#
newDate = DateAdd("m",3,currentDate)
response.write newDate
%>
<%
currentDate = #12:34:45 PM#
newDate = DateAdd("h",3,currentDate)
response.write newDate
%>
结果:
11/4/99
3:34:45 PM
其中
"m" = "month";
"d" = "day";
如果是currentDate 格式,则,
"h" = "hour";
"s" = "second";

7.函数Datediff()
功能:计算某量个指定的时间差
格式: datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])
参数: timeinterval 是时间单位; date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear 是任意选项.
例子:
<%
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
DateDiff("d",fromDate,toDate) & _
" days to millenium from 8/4/99."
%>
结果:There are 150 days to millenium from 8/4/99.

8.函数day()
功能:返回一个整数值,对应于某月的某日
格式: day(date)
参数: date是一个有效的日期表达式;
例子:
<% =day(#8/4/99#) %>
结果:4

9.函数formatcurrency()
功能:转换成货币格式
格式: formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
参数: expression 是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项.
例子:
<%=formatCurrency(34.3456)%>
结果34.35

10.函数formatdatetime()
功能:格式化日期表达式/变量
格式: formatdatetime(date[,nameformat])
参数: date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.
例子:
<% =formatdatetime("08/04/99",vblongdate) %>
结果:Wednesday,August 04,1999
说明:
<script language=vbs>
for i=0 to 4
alert(" formatdatetime(now,"&i&") 的时候是:"&formatdatetime(now,i))
next
</script>
描述
返回表达式,此表达式已被格式化为日期或时间。
语法
formatDateTime(Date[, Namedformat])
formatDateTime 函数的语法有以下参数:

参数 描述
Date 必选项。要被格式化的日期表达式。
Namedformat 可选项。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。

设置
Namedformat 参数可以有以下值:
常数 值 描述
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。
vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。
vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。
vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。
vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。

说明
下面例子利用 formatDateTime 函数把表达式格式化为长日期型并且把它赋给 MyDateTime:
<%
Function GetCurrentDate
"formatDateTime 把日期型格式化为长日期型。
GetCurrentDate = formatDateTime(Date, 1)
End Function
%>
<script language=vbs>
for i=0 to 4
alert(" formatdatetime(now,"&i&") 的时候是:"&formatdatetime(now,i))
next
</script>

11.函数Isnumeric()
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量.
格式:isnumeric(expression)
参数:expression 是任意的变量.
例子:
<%
i="234"
response.write isnumeric(i)
%>
结果: true.

12.函数Isobject()
功能:返回一个布尔值,判断变量是否为对象的变量,
格式: isobject(expression)
参数: expression 是任意的变量.
例子:
<%
set con =server.creatobject("adodb.connection")
response.write isobject(con)
%>
结果: true

13.函数:Lbound()
功能:返回一个数组的下界.
格式:Lbound(arrayname[,dimension])
参数:arrayname 是数组变量,dimension 是任意项
例子:
<%
i = array("1","2","3")
response.write lbound(i)
%>
结果:0

14.函数Lcase()
功能:将一字符类型变量的字符全部变换小写字符.
格式:Lcase(string)
参数:string是字符串变量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
结果:this is lcase!

15.函数left()
功能:截取一个字符串的前部分;
格式:left(string,length)
参数:string字符串,length截取的长度.
例子:
<% =left("this is a test!",6) %>
结果:this i

16.函数len()
功能:返回字符串长度或者变量的字节长度
格式:len(string *varname)
参数:string字符串;varname任意的变量名称
例子:
<%
strtest="this is a test!"
response.write len(strtest)
%>
结果:15

17.函数ltrim()
功能:去掉字符串前的空格.
格式:ltrim(string)
参数:string 字符串.
例子:
<% =ltrim(" this is a test!") %>
结果:this is a test!

18.函数Mid()
功能:从字符串中截取字符串.
格式:mid(string,start [,length])
参数:string字符串,start截取的起点,length要截取的长度.
例子:
<%
strtest="this is a test, Today is Monday!"
response.write mid(strtest,17,5)
%>
结果:Today

19.函数minute()
功能:返回一数值, 表示分钟
格式:minute(time)
参数: time是时间变量
例子:
<% =minute(#12:23:34#) %>
结果:23

20.函数month()
功能:返回一数值, 表示月份
格式:month(time)
参数:time是日期变量
例子:
<% =month(#08/09/99) %>
结果:9

21.函数monthname()
功能:返回月份的字符串(名称).
格式:Monthname(date [,abb])
参数: date是日期变量,abb=true时 则月份的缩写,
例子:
<% =monthname(#4/5/99#) %>
结果:April

22.函数Now()
功能:返回系统的当前时间和日期.
格式:now()
参数:无
例子:
<% =now() %>
结果: 05/10/00 8:45:32 pm

23.函数:replace()
功能:在字符串中查找,替代指定的字符串.
格式:replace(strtobesearched,strsearchfor,strreplacewith [,start[,count[,compare]]])
参数:strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用来替代的子字符串.start,count,compare 是任意选项.
例子:
<%
strtest="this is an apple."
response.write replace(strtest,"apple","orange")
%>
结果:this is an orange.

24.函数right()
功能:截取一个字符串的后部分
格式:right(string,length)
参数:string字符串,length截取的长度.
例子:
<%
strtest="this is a test!"
response.write right(strtest,3)
%>
结果:st!

25.函数rnd()
功能:返回一个随机数值
格式:rnd[(number)]
参数:number是任意数值.
例子:
<%
randomize()
response.write rnd()
%>
结果:0/1数值之一,无randomize(), 则不能产生随机数.

26.函数round()
功能:完整数值
格式:round(expression[,numright])
参数:expression数字表达式;numright任意选项.
例子:
<%
i=12.33654
response.write round(i)
%>
结果: 12

27.函数rtrim()
功能:去掉字符串后的空格.
格式:rtrim(string)
参数:string 是字符串
例子:
<%
response.write rtrim("this is a test! ")
%>
结果:this is a test!

28.函数second()
功能:返回一个整数值.
格式:second(time)
参数:time是一个有效的时间表达式;
例子:
<% =second(# 12:28:30#) %>
结果:30

29.函数strReverse()
功能:返回与原字符串排列逆向的字符串.
格式:strreverse(string)
参数:string是字符串
例子:
<% =strreverse("this is a test!") %>
结果:!tset a si siht

30.函数time()
功能:返回当前系统的时间值.
格式:time()
参数:无
结果:9:58:28 Am

31.函数trim()
功能:删去字符串前,后的空格.
格式:trim(string)
参数:string 字符串.
例子:
<%
strtest=" this is a test! "
response.write trim(strtest)
%>
结果:this is a test!

32.函数UBound()
功能:返回一个数组的上界.
格式:Ubound(expression [,dimension])
参数:expression 是数组表达式/数组变量,dimension 是任意项
例子:
<%
i = array("1","2","3")
response.write ubound(i)
%>
结果: 2

33.函数:UCase()
功能:将一字符类型变量的字符全部变换成大写字符.
格式:Ucase(string)
参数:string是字符串变量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
结果:THIS IS LCASE!

34.函数Vartype()
功能:返回变量的常量代码(整数)
格式:Vartype(varname)
参数:varname是任何类型的变量名称.
例子:
<%
i=5
response.write vartype(i)
%>
结果:2 (2表示整数,须要参考ASP常量代码.)

35.函数Weekday()
功能:返回一个整数,对应一周中的第几天.
格式:Weekday(date [,firstofweek])
参数: date为日期变量,firstofweek为任选项.
例子:
<%
d=#5/9/00#
response.write weekday(d)
%>
结果:3(3 表示是星期二)

36.函数weekdayname()
功能:返回字符串,对应星期几.
格式:weekdayname(weekday[,abb[,firstdayofweek]])
参数:weekday为日期变量,abb,firstdayofweek为任选项.
例子:
<%
d = #8/4/99#
response.write weekdayname(d)
%>
结果: Wednesday

37.函数year()
功能:返回日期表达式所在的年份.
格式:year(date)
参数: date是有效的日期表达式
例子:
<% =year(#8/9/99#) %>
结果:1999

38.函数Mod()
功能:取余数.
例子:
<%
3 Mod 2
%>
结果:1
我先介绍一下Split函数的用法:
返回值数组 = Split("字符串","分割符")

39.split函数的应用
split 是一个分隔字符串的函数,它的作用是把用特定分隔符隔开的字符串转化为一个数组,这在编程中用的比较多,如上传多张图片,在数库中仅能用一个字段存储的情况下,split就起作用了,下面是一个具体的例子,和数组结合使用.
<%
dim str1
str1="icerain|fengling|windbell|"
aryReturn=split(str1,"|")
response.write "返回的是否为数组"&IsArray(aryReturn)
response.write "<br>"
for i=LBound(aryReturn) TO UBound(aryReturn)
response.write aryReturn(i)
response.write "<br>"
next
response.end
%>

40.Rnd()
功能:函数产生一个随机数.
表达式: Rnd [ (number) ]
实例:
<%
Randomize()
response.write RND()
%>


2000.01
30

把ACCESS转成SQL数据的方法

IDEA写于2000年01月30日 星期日 11:45 am

很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考—将ACCESS转化成SQL2000的方法和注意事项

一,首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的;

二,转换的方法

1,打开”控制面板“下”管理工具“中的”数据库源“;

2,按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。数据源在这里建好了,剩下转换了。

3,打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”;

4,选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续;

5,在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按 ”下一步“;

6,“目的”不需要修改,选择服务器(一般下为自己的本机local,也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),使用WINDOWS 身份验证指用自己的系统管理员身份操作,使用SQL身份操作验证可以用于网站的操作,推荐用后者;

7,选上使用SQL身份操作验证后,填写你的用户名和密码,我自己选择的是系统默认号码sa,****,数据库选择刚新建的ABC,按下一步;

8,这一步的两个单项选择,从数据源复制表和视图与用一条查询指令指定要传输的数据,选择前者,按下一步继续;

9,这里将出现你自己ACCESS数据库的表,按全选后,下一步;

10,DTS导入/导出向导,看立即运行被选中按下一步,

11,按完成继续;

12,这个步骤你将看到你的数据被导入SQL2000里面,当出现已经成功把XXX个表导入到数据库的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的*的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了.

三,数据修改

1,由于SQL2000里面没有自动编号,所以你的以自动编号设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的标示选择是,种子为1,增量为1,

2,另外,ACCESS2000转换成SQL2000后,原来属性为是/否的字段将被转换成非空的bit,这时候你必须修改成自己想要的属性了;

3,另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.

ACCESS转MS SQL数据库的几点经验

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete * from user where id=10,而对SQL SERVER数据库进行删除是用:delete user where id=10.

4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。

Access转SQL Server要注意些什么?
问题:

新手来看:Access转SQL Server要注意些什么?

方法一:

在这里,我们谈论的是 Access 开发的升级,如何升级到 SQL Server 2000。你有几种升级方法可以选择。

1、你可以采用链接表方式,通过链接表链接到 SQL SERVER 2000 中的表。原先在 ACCESS 中开发的程序基本无需更改,除非你要更改数据结构。

2、你可以采用 ADP 的方式升级数据库,ADP 方式基本抛弃了原先 MDB 大多数模式。你必须适应新的数据结构,接受 JET SQL 编写的查询变成 T-SQL 编写的存储过程、视图等等对象的结果。也就是说你必须重新学习 T-SQL 。

方法二:

给你一些我的经验吧。反正access到sqlserver的移植是很痛苦的,我弄过好几次了。
希望大家能补充一下。

1.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用
decimal。

2.所有的默认值都丢失了。主要是数字类型和日期类型。

3.所有now(),time(),date()要改成getdate()。

4.所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

5.有可能一些true/false类型不能使用,要变为1/0。

6.备注类型要通过cast(column as varchar)来使用。UploadFiles/2005-12/1222208225.rar

7.CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能
显示不完整。

8.isnull(rowname)要改成rowname = null

方法三:

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用


2000.01
07

安装任何软件都提示不能访问windows Installer服务的解决办法

IDEA写于2000年01月07日 星期五 9:58 pm

现在安装软件时提示:不能访问windows Installer服务,可能是你在安全模式下运行windows或者windows Installer 没有正确地安装,请和你的支持人员联是以获得帮助。导致任何的软件都无法安装和卸载。

    我的[服务]项目里的windows Installer服务的启动方式是手动,单击[启动]按钮后又蹦出来:”在本地计算机无法启动windows Installer服务,错误997:重叠I/O操作在进行中”的提示框。

图1

图2

一、微软Windows Installer 组件介绍:
    微软Windows Installer作为Win2K/WinXP的组件之一,是专门用来管理和配置软件服务的工具。在Win95、Win98、WinMe与WinNT4,0下,作为额外的产品提供,允许用户有效地安装与配置软件产品与应用程序。新的Installer提供给软件产品新的特性,例如使用命令行安装产品、增加了用户的可定制性。
    Windows Installer 软件安装技术。该技术包括适用于 32 位 Windows 操作系统的 Windows Installer 服务器,以及一个用于存储有关配置和安装信息的新软件包文件格式。
    Windows Installer 不仅仅是一个安装程序,它还是一个可扩展的软件管理系统。Windows Installer 管理软件的安装,管理软件组件的添加和删除,监视文件复原,并通过使用回滚来维护基本的灾难恢复。
    此外,Windows Installer 还支持从多个源安装和运行软件,并且可以由要安装自定义程序的开发人员定制。

二、Windows Installer 的功能包括:
   

  • 在安装失败时将计算机还原为原始状态:Windows Installer 跟踪在程序安装过程中对系统进行的所有更改。如果安装失败,Installer 可以将系统恢复到其初始状态。这称为”回滚”。

   

  • 帮助防止特定形式的程序之间产生冲突:正在安装或卸载的程序可能会导致计算机上已安装的另一个程序出现问题,甚至导致计算机停止响应(挂起)。Installer 可以强制实施一些安装规则,以帮助防止当安装操作更新由现有程序共享的动态链接库 (DLL) 文件时,或当卸载操作删除由另一个程序共享的 DLL 文件时出现冲突。

   

  • 诊断并修复损坏的程序:程序可以要求 Installer 确定已安装的程序是否缺少文件,或者文件是否已损坏。然后,它可以要求该服务根据需要再次只复制已发现丢失或损坏的文件来修复该程序。

   

  • 可靠地卸载现有程序:Installer 可以可靠地卸载以前安装的任何程序,并删除所有相关联的注册表条目和程序文件,但其他已安装的软件所共享的文件及注册表条目除外。

   

  • 支持按需安装程序功能:可以指示 Installer 首先安装程序的最小子集。之后,在您首次使用需要附加组件的功能时,会自动安装附加组件。

   

  • 支持无人参与的程序安装:Installer 支持根据管理员的指令使用脚本来安装程序。

    Windows Installer 技术分为以下两部分,它们结合在一起工作:客户端安装服务 (Msiexec.exe) 和 Microsoft 软件安装 (MSI) 软件包文件。Windows Installer 使用软件包文件中包含的信息安装程序。
    Msiexec.exe 程序是 Windows Installer 的一个组件。当安装程序调用 Msiexec.exe 时,它使用 Msi.dll 读取软件包 (.msi) 文件,应用任何转换 (.mst) 文件,并合并安装程序所提供的命令行选项。Installer 执行所有与安装有关的任务,包括将文件复制到硬盘、修改注册表、在桌面上创建快捷方式,以及在必要时显示对话框以提示用户输入安装首选项。
    在计算机上安装 Windows Installer 后,它将更改注册的 .msi 文件的文件类型,以便当您双击 .msi 文件时,将运行 Msiexec.exe。
    每个 MSI 软件包文件都包含一个关系类型的数据库,用于存储在各种安装方案中安装(或卸载)该程序所需的指令和数据。

三、Windows Installer出错的解决方案
  Windows Installer(windows安装服务)是一种通用的软件发布方式,现在许多软件都使用windows Installer作为自己的安装程序,有时因为各种原因以及windows Installer本身的缺陷,会导致windows Installer出错。

  症状一:删除某个程序后,在运行某些软件时,老会弹出一个”windows正在配置Windows Installer,请稍候”的窗口。
  解决办法:
  1、重新安装Windows Installer,office XP安装盘的根目录有两个名为instmsi.exe和InstMsiW.exe的文件,instmsi.exe用于win9X/Me,InstMsiW.exe用于Win2000/XP;
  2、打开组策略→计算机配置→管理模板→Windows组件→Windows Installer→禁用Windows Installer,只是这样一来,很多软件就有能安装了,此法用于Win2000/XP。
  3、请看本文最后的”终级解决方案”

  症状二:Win2000/XP安装软件时提示”无法访问windows安装程序,服务中windows Installer状态为停止,不能启动”
  解决办法:
  1、命令提示符下输入:misiexec /regserver
  2、在”管理工具”→”服务”中启动windows Installer

  症状三:Win2000/XP安装软件时提示”不能访问Windows Installer服务……”
  解决办法:
  1、检查当前用户有无管理员权限;
  2、结束进程Ikernel,exe后再安装;
  3、删除系统安装目录Program Files\Common Files\InstallShield\Engine下的所有文件再安装。
  4、首先,运行”msiexec /unregserver”,停止Windows Installer服务;
  接着,安装InstMsiW.exe(office XP安装盘的根目录下有,也可以从网上下载,地址为:http://download.microsoft.com/download/WinfowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe),用Winrar解压至设定的目录;进入目录,右键点击msi.inf选”安装”,右键点击mspatcha.inf,选安装;
  最后运行”msiexec /regserver”启用服务。

  症状四:安装软件时提示”系统管理员设置了系统策略,禁止进行此项安装”
  解决办法:
  1、尝试用症状三的解决方法;
  2、打开组策略→用户配置→管理模板→Windows组件→Windows安装服务→将”禁止从媒体安装”设为”禁用”,将”永远以高特权进行安装”设置为”启用”

四、以上问题的终级解决方案:
  下载安装微软提供的Windows Installer CleanUp Utility 1.0,它的主要功能是清除程序的Windows Installer配置信息。启动该工具,它会列出目前系统中所有Windows Installer使用安装的软件,选中出问题的软件,然后点”Remove”按钮即可。
    Windows Installer CleanUp Utility 1.0下载地址:http://www.onlinedown.net/soft/27518.htm

——————–

 windows installer服务解决方案

很多朋友在安装MSI格式的文件包时,经常会遇到windows installer出错的情况,有如下几种现象:

1、所有使用windows installer服务安装的MSI格式程序均不能正常安装,并且系统提示“不能访问windows installer 服务,可能你在安全模式下运行 windows ,或者windows installer 没有正确的安装,请和你的支持人员联系以获得帮助”。

2、察看“windows installer服务”的状态,一般为停用,当你试图启用此服务,会发现此服务已被系统禁用,或则windows installer服务已被标记为删除。

3、如果你重新安装windows installer服务,系统提示“指定的服务已存在”。

当出现了以上现象,是非常令人头疼的,而且问题难以解决,后来经自己研究发现一些非常好的解决方法。

笔者以Windows2000和Windows XP系统为例,根据它们出现的不同问题分别介绍一下解决过程:

一、Windows2000解决过程:

在Windows2000系统中3种现象都是经常出现的。

第一步:点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /unregserver“命令,这样就停掉windows installer服务。

第二步:下载windows installer服务安装程序包,Windows2000/NT系统的安装程序包为”InstMsiW.exe“,Windows98/ME安装程序包为”InstMsiA.exe”,Windows XP系统则集成了最新版本的Windows Installer v2.0。

下载”InstMsiW.exe“安装程序包后,将其用winrar解压开,然后进入到此目录中。

第三步:右键单击”msi.inf“文件,点击”安装“选项,接着右键单击” mspatcha.inf “文件,点击”安装“。

第四步:在CMD命令提示符下输入”msiexec /regserver“命令,这样就启动了windows installer服务,重新启动Windows2000系统后,问题就得到解决。

注意:在安装两个inf文件的过程中,不要重新启动系统,全部操作完成后才能重启,另外,如果系统安装了”瑞星病毒防火墙”和“瑞星网络防火墙”,建议在操作过程中关闭瑞星防火墙。

二、Windows XP解决过程:

Windows XP集成了最新版本的Windows Installer v2.0,但在Windows XP里安装MSI程序也会经常出现”找不到windows installer服务”“的错误。

第一步:使用记事本编写installer.reg文件,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer]

“ImagePath”=-

“ImagePath”=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\

74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,\

00,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,\

56,00,00,00

然后将文件保存为”.reg“格式,双击该文件,将文件内容导入注册表。

第二步:重新启动电脑进入安全模式(启动时按F8键),然后点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /regserver“,最后重新启动系统即可。