自己的点滴学习脚印
win2000 2003命令大全
[
2009-10-24 18:23 | by viphjw ]
accwiz.exe >Accessibility Wizard for walking you through setting up your machine for your mobility needs. 辅助工具向导
acsetups.exe >ACS setup DCOM server executable actmovie.exe >Direct Show setup tool 直接显示安装工具
append.exe >Allows programs to open data in specified directories as if they were in the current directory. 允许程序打开制定目录中的数据
acsetups.exe >ACS setup DCOM server executable actmovie.exe >Direct Show setup tool 直接显示安装工具
append.exe >Allows programs to open data in specified directories as if they were in the current directory. 允许程序打开制定目录中的数据
Windows Server 2003安全事件ID分析
[
2009-10-24 17:27 | by viphjw ]
根据下面的ID,可以帮助我们快速识别由 Microsoft?Windows Server 2003 操作系统生成的安全事件,究竟意味着什么事件出现了
一、帐户登录事件
下面显示了由“审核帐户登录事件”安全模板设置所生成的安全事件
672:已成功颁发和验证身份验证服务 (AS) 票证
673:授权票证服务 (TGS) 票证已授权TGS 是由 Kerberos v5 票证授权服务 (TGS) 颁发的票证,允许用户对域中的特定服务进行身份验证
一、帐户登录事件
下面显示了由“审核帐户登录事件”安全模板设置所生成的安全事件
672:已成功颁发和验证身份验证服务 (AS) 票证
673:授权票证服务 (TGS) 票证已授权TGS 是由 Kerberos v5 票证授权服务 (TGS) 颁发的票证,允许用户对域中的特定服务进行身份验证
操作系统中的常用SID
[
2009-10-24 17:18 | by viphjw ]
SID:S-1-0
名称:Null Authority
描述:标识符颁发机构
SID:S-1-0-0
名称:Nobody
描述:无安全主体
SID:S-1-1
名称:World Authority
描述:标识符颁发机构
SID:S-1-1-0
名称:Everyone
描述:包括所有用户(甚至匿名用户和来宾)的组成员身份由操作系统控制
名称:Null Authority
描述:标识符颁发机构
SID:S-1-0-0
名称:Nobody
描述:无安全主体
SID:S-1-1
名称:World Authority
描述:标识符颁发机构
SID:S-1-1-0
名称:Everyone
描述:包括所有用户(甚至匿名用户和来宾)的组成员身份由操作系统控制
RAID磁盘阵列技术
[
2009-10-24 15:04 | by viphjw ]
RAID磁盘阵列技术简述
在计算机发展的初期,"大容量"硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐.1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》的论文,其基本思想就是将多只容量较小的、相对廉价的硬盘驱动器进行有机组合,使其性能超过一只昂贵的大硬盘.这一设计思想很快被接受,从此RAID技术得到了广泛应用,数据存储进入了更快速、更安全、更廉价的新时代.
磁盘阵列对于个人电脑用户,还是比较陌生和神秘的.印象中的磁盘阵列似乎还停留在这样的场景中:在宽阔的大厅里,林立的磁盘柜,数名表情阴郁、早早谢顶的工程师徘徊在其中,不断从中抽出一块块沉重的硬盘,再插入一块块似乎更加沉重的硬盘......终于,随着大容量硬盘的价格不断降低,个人电脑的性能不断提升,IDE-RAID作为磁盘性能改善的最廉价解决方案,开始走入一般用户的计算机系统
在计算机发展的初期,"大容量"硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐.1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》的论文,其基本思想就是将多只容量较小的、相对廉价的硬盘驱动器进行有机组合,使其性能超过一只昂贵的大硬盘.这一设计思想很快被接受,从此RAID技术得到了广泛应用,数据存储进入了更快速、更安全、更廉价的新时代.
磁盘阵列对于个人电脑用户,还是比较陌生和神秘的.印象中的磁盘阵列似乎还停留在这样的场景中:在宽阔的大厅里,林立的磁盘柜,数名表情阴郁、早早谢顶的工程师徘徊在其中,不断从中抽出一块块沉重的硬盘,再插入一块块似乎更加沉重的硬盘......终于,随着大容量硬盘的价格不断降低,个人电脑的性能不断提升,IDE-RAID作为磁盘性能改善的最廉价解决方案,开始走入一般用户的计算机系统
硬盘主引导分区表(MBR)反汇编分析
[
2009-10-13 11:00 | by viphjw ]
MBR(Main Boot Record)主引导记录区位于硬盘0磁道0柱面1扇区
Robocopy 是一个功能超强的文件复制工具,使用方法和xcopy类似。默认在Windows Vista中有
使用格式:ROBOCOPY source destination [file [file]...] [options]
源:: 源目录(驱动器:\路径或\服务器\共享\路径)
目录:: 目标目录(驱动器:\路径或\服务器\共享\路径)
文件:: 要复制的文件(名称/通配符: 默认为 "*.*")
使用格式:ROBOCOPY source destination [file [file]...] [options]
源:: 源目录(驱动器:\路径或\服务器\共享\路径)
目录:: 目标目录(驱动器:\路径或\服务器\共享\路径)
文件:: 要复制的文件(名称/通配符: 默认为 "*.*")
Windows 7 最终定型键盘快捷键和鼠标动作
[
2009-3-21 12:16 | by viphjw ]
下文给出的全部新增快捷键列表中, 你肯定会发现自己以前不知道的. 而且, 鼠标操作也可以快捷实现某些功能了, 我们还是一起来看看TechNet整理的列表吧
HTTP头部信息简单说明
[
2009-2-24 12:39 | by viphjw ]
一、HTTP响应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行
响应码分五种类型,由它们的第一位数字表示:
1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,请求包含语法错误或者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求
响应码分五种类型,由它们的第一位数字表示:
1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,请求包含语法错误或者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求
各大品牌lcd进入工厂模式的方法
[
2009-2-6 12:51 | by viphjw ]
本文开始之前,我们首先为大家释疑几个焦点问题.
一、什么是显示器的工厂模式?工厂模式是厂家在设计电路时预留的一些功能,这些功能并不对普通用户开放的.通过特殊的方式进入,通过修改存储器数据或其他方式对显示器进行维护.
二、工厂模式都能做些什么?由于不同的显示器厂商对一些功能的定义也略有不同,比如一些不常用的集合失真,线性失真,会聚,色纯,加速极电压等等项目,当显示器有一些软件故障的时候,可以借助它在不维修电路的基础上来解决问题.这里所说的软件故障,指的是像亮度,色彩,色纯,会聚,集合失真,线型失真,位置尺寸等,如果用户的显示器不亮了,或者是抖动,或者是由电路元件引起的故障,那是工厂模式解决不了的
三、对工厂模式的不适当操作会有什么后果?由于不同厂商的工厂模式内置的功能不同.有的显示器工厂模式只是比普通功能多出一点而已,如果调节不当只是影响显示效果.但有一部分厂商的工厂模式功能相当丰富,不慎的误操作则有可能对显示器产生很大的影响,比如影响到显示器的部分功能甚至导致显示器无法正常工作.所以我们劝大家在使用工厂模式时要慎重,在不清楚某个功能之前,最好不要乱调,由此而造成的后果我们不负任何责任.
但是,由于工程模式中存储着诸如:LCD累计使用时间或出厂日期,甚至液晶面板类型等一些重要参数,所以对于购买LCD的朋友,进入工厂模式查看一些相关信息也是验证LCD是否是新品的重要方法,同时也给购买二手LCD的朋友提供了重要的参考价值,因为使用时间越短越值得购买.所以,我们公布目前市面知名品牌液晶进入工厂模式的方法,希望对大家购买液晶显示器的时候有所帮助,同时我们对比一下不同显示器厂商的工厂模式提供的信息有什么不同之处
一、什么是显示器的工厂模式?工厂模式是厂家在设计电路时预留的一些功能,这些功能并不对普通用户开放的.通过特殊的方式进入,通过修改存储器数据或其他方式对显示器进行维护.
二、工厂模式都能做些什么?由于不同的显示器厂商对一些功能的定义也略有不同,比如一些不常用的集合失真,线性失真,会聚,色纯,加速极电压等等项目,当显示器有一些软件故障的时候,可以借助它在不维修电路的基础上来解决问题.这里所说的软件故障,指的是像亮度,色彩,色纯,会聚,集合失真,线型失真,位置尺寸等,如果用户的显示器不亮了,或者是抖动,或者是由电路元件引起的故障,那是工厂模式解决不了的
三、对工厂模式的不适当操作会有什么后果?由于不同厂商的工厂模式内置的功能不同.有的显示器工厂模式只是比普通功能多出一点而已,如果调节不当只是影响显示效果.但有一部分厂商的工厂模式功能相当丰富,不慎的误操作则有可能对显示器产生很大的影响,比如影响到显示器的部分功能甚至导致显示器无法正常工作.所以我们劝大家在使用工厂模式时要慎重,在不清楚某个功能之前,最好不要乱调,由此而造成的后果我们不负任何责任.
但是,由于工程模式中存储着诸如:LCD累计使用时间或出厂日期,甚至液晶面板类型等一些重要参数,所以对于购买LCD的朋友,进入工厂模式查看一些相关信息也是验证LCD是否是新品的重要方法,同时也给购买二手LCD的朋友提供了重要的参考价值,因为使用时间越短越值得购买.所以,我们公布目前市面知名品牌液晶进入工厂模式的方法,希望对大家购买液晶显示器的时候有所帮助,同时我们对比一下不同显示器厂商的工厂模式提供的信息有什么不同之处
一个正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式该模式描述在查找文字主体时待匹配的一个或多个字符串正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配,这里有一些可能会遇到的正则表达式示例
VS2005中Manifest引入的问题
[
2009-1-4 16:52 | by viphjw ]
问题描述:大部分的vs.net 2005的用户在新建“win32项目-windows应用程序”的时候,新建的工程都通不过去,出现如下提示: Solution to “MSVCR80D.dll not found”“没有找到MSVCR80D.dll,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题.”
解决办法:
这到底是什么问题呢?
解决这个问题的过程,说起来有些漫长,找了不少的资料,最后才在C++饼子堂一网友的指点下,找到问题的原因,原来是是Manifest在作怪,后来又在自己的努力下,摸索出了解决办法,如下:
① 把开发机器上的Windows WinSxS 目录下和VC相关的目录(或者是你用到的目录)拷贝到目标机器对应位置下
② 把开发机器上的Windows WinSxS Manifests 目录下和VC相关的文件(或者是你用到的目录)拷贝到目标机器对应位置下
③ 把开发机器上的Windows WinSxS Policys 目录下和VC相关的目录(或者是你用到的目录)拷贝到目标机器对应位置下
如此以来,就可以在目标机器上运行你的应用程序了.
参考资料
1 版本问题:DLL Hell
从客户的角度,最常见的版本问题就是我们所说的 DLL Hell 问题.简单地讲, DLL Hell 是指当多个应用程序试图共享一个公用组件(如某个动态连接库(DLL)或某个组件对象模型(COM)类)时所引发的一系列问题.最典型的情况是,某个应用程序将要安装一个新版本的共享组件,而该组件与机器上的现有版本不向后兼容.虽然刚安装的应用程序运行正常,但原来依赖前一版本共享组件的应用程序也许已无法再工作.在某些情况下,问题的起因更加难以预料.比如,当用户浏览某些 Web 站点时会同时下载某个 Microsoft ActiveX® 控件.如果下载该控件,它将替换机器上原有的任何版本的控件.如果机器上的某个应用程序恰好使用该控件,则很可能也会停止工作.
在许多情况下,用户需要很长时间才会发现应用程序已停止工作.结果往往很难记起是何时的机器变化影响到了该应用程序.用户可能会回忆起一周前安装了一些东西,但安装与目前看到的状态并没有任何明显的关联. 更糟的是,现在很少有诊断工具帮助用户(或帮助他们的技术支持人员)确定有什么问题.
这些问题的原因是应用程序不同组件的版本信息没有由系统记录或加强.而且,系统为某个应用程序所做的改变会影响机器上的所有应用程序—现在建立完全从变化中隔离出来的应用程序并不容易.
很难建立一个隔离应用程序的一个原因是当前运行时环境只允许单独版本组件或应用程序的安装.这个限制意味着组件的编写者必须以向后兼容的方式编写他们的代码,否则当他们安装新组件的时候会有终止已有应用程序的风险.实际上,如果可能的话,编写永远向后兼容的代码是非常难的.在 .NET 中,side by side 概念是版本问题的核心."Side by side" 是在同一台机器上同时运行不同版本的相同组件的能力.使用支持并列的组件,编程人员不必努力维护严格的向后兼容,因为不同的应用程序自由使用某个共享组件的不同版本.
2 Windows中的WinSxS目录
随着系统资源越来越丰富,硬盘不那么紧张,为了解决不同程序的版本问题,微软在XP以后的操作系统中引入了一种“支持COM和共享DLL的隔离 ”机制,使用这种新的机制来管理DLL .这种机制,不仅仅被.NET平台采用,而且也被Native程序采用.
如此一来,在Windows XP以后的系统中,在“Windows”目录下就多了一个名为“WinSxS”(Windows Side-by-Side)的文件夹.系统使用这个文件夹存储各个版本的Windows XP组件,减少因为动态链接库(Dynamic Link Libraries,DLL)引起的配置问题(DLL hell).组件的多个版本都存储在这个文件夹中.Windows XP允许Win32 API组件和应用程序使用与这些程序在测试时所使用的版本完全一致的Microsoft 组件版本,并且不受其它程序或者操作系统升级的影响.Windows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据,例如COM类、接口和类型库.
3什么是Manifest
“Windows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据”,这里所说的XML文件,就是Manifest清单文件.
Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和激活,而这些信息,以往都是存储在注册表中的.另外,Manifests也制定了组成程序集的文件及Windows类.
4 Manifest的分类
在Windows XP中,事实上是在.NET中,把Manifests分类为如下几种类型:
l 程序集Manifests(Assembly Manifests):主要用于描述程序集,管理程序集的名字、版本、资源、依赖程序集.其中共享程序集的Manifests存储在Windows的WinSxS目录中.私有的程序集Manifests则存可以作为一个资源存储在DLL中,也可以存储在应用程序目录下.
l 应用程序Manifests(Application Manifests):这类Manifests则用于描述隔离应用程序,它管理着此应用程序在运行时要绑定的共享的并行组件的名字、版本.该Manifests可以作为一个文件(.manifest文件)存储在应用程序相同的目录下,也可以作为一种资源嵌入在可执行文件内部(Embed Manifest).
l 应用程序配置文件(Application Configuration Files):对于并行组件及隔离应用程序来说,使用这种Manifests来“Override and Redirect”所依赖程序集的版本.
l 发行配置文件(Publisher Configuration Files):用于重定向并行组件的版本倒另外一个合适的版本的Manifests.此时,被重定向的新程序集应该和原来的旧程序集具有相同的主.次(majou.minor)版本号.
5 Windows对于Manifest的处理
XP以前版本的windows,会像以前那样执行这个exe文件,寻找相应的dll,没有分别,Manifest只是个多余的文件或资源,dll文件会直接到system32的目录下查找,并且调用.
而XP及其以后的操作系统,则会首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)操作系统再根据DLL的Manifest提供的信息去寻找对应的DLL ,这样就可能区别不同版本的同一个DLL文件.
这就说明了为什么我的程序可以在2000下面运行,而在XP及2003上无法运行.
6 VS2005种的Manifest配置
使用Visual Studio 2005以后的一个新问题是,VS2005带的8.0新版的C运行库(VC 8.0 CRT)文件在XP以后支持manifest的Windows版本中被调用时,将会check一下Application自身的Manifest,否则将会拒绝被调用,这也就是说,使用Visual Studio开发的Application,Manifest将是必不可少的(搞不懂MS为啥要这样设置,反正与VS2003.NET不同了,也许除了MS自己说的哪些冠冕堂皇的原因,至少这样一来Linux的Wine模拟要麻烦多了)
不过,如果你的程序是静态链接的,没有使用dll,且只使用了操作系统核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等,那么你可以不需要考虑Manifest, 可以关掉它.此时,在VS2005种中,project的设置必须是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support
下面是VS2005中和Manifest相关的设置:
Project/Properties/Linker/Manifest File/Generate Manifest : 决定是否生成Manifest,如上情况才可以关闭
Project/Properties/Linker/Manifest File/Allow Isolation : 这个是设置DLL的调用的,并不能决定Manifest是否还是必须的
Project/Properties/Manifest Tool/Input and Output/Embed Manifest 决定Manifest是个单独的文件还是嵌入到exe内的资源
7 其他
与上面内容相应的是关于如何发布软件的问题,事实上只有VC6.0的CRT库是绑定作为Windows的一部分的,之后从VS.net开始,VC程序制作安装包也是要考虑库文件的,只不过VC6.0时推荐拷入System32,VC.net时推荐放在exe文件local目录,而现在VS2005则还需要考虑Manifest的问题了,看似麻烦,其实也还好,VS自带工具打包,下面一些网址也有讲如何手工做redistribution
参考网址:
http://msdn2.microsoft.com/en-us/library/ms235342.aspx
http://msdn2.microsoft.com/en-us/library/ms235265.aspx
http://msdn2.microsoft.com/en-us/library/8kche8ah.aspx
http://blog.kalmbachnet.de/?postid=54
http://blogs.msdn.com/nikolad/archive/2005/03/18/398720.aspx
如何手工做redistribution:
However, let's go back to questions I am often asked. How to redistribute VC++ libs in applocal? In Beta 1 and Beta 2 the answer is:
- Go to Windows\WinSxS and find assembly and Dlls you are interested in. For example, let's assume you are interested in the CRT and STL DLLs on x86. Then you are looking for directory x86_Microsoft.VC80.CRT_[staff]_8.0.50110.4359_[staff] with msvcr80.dll and msvcp80.dll. This 8.0.50110.4359 is the assembly version, remember it for future. Check that version of the compiler you are using matches to version of this assembly.
- Copy these two Dlls to your application local folder.
- Go to Windows\WinSxS\Manifests\ and find 636 x86_Microsoft.VC80.CRT_[staff]_8.0.50110.4359_[staff].manifest.
- Copy this manifest to application local folder.
- Rename this manifest to Microsoft.VC80.CRT.manifest. Basically name of the manifest has to match name of the assembly (it can be find on the 4th line of the manifest if you view it).
- Copy your app and Dlls and manifest to another computer where VS2005 is not installed. Try to run it and it should run
解决办法:
这到底是什么问题呢?
解决这个问题的过程,说起来有些漫长,找了不少的资料,最后才在C++饼子堂一网友的指点下,找到问题的原因,原来是是Manifest在作怪,后来又在自己的努力下,摸索出了解决办法,如下:
① 把开发机器上的Windows WinSxS 目录下和VC相关的目录(或者是你用到的目录)拷贝到目标机器对应位置下
② 把开发机器上的Windows WinSxS Manifests 目录下和VC相关的文件(或者是你用到的目录)拷贝到目标机器对应位置下
③ 把开发机器上的Windows WinSxS Policys 目录下和VC相关的目录(或者是你用到的目录)拷贝到目标机器对应位置下
如此以来,就可以在目标机器上运行你的应用程序了.
参考资料
1 版本问题:DLL Hell
从客户的角度,最常见的版本问题就是我们所说的 DLL Hell 问题.简单地讲, DLL Hell 是指当多个应用程序试图共享一个公用组件(如某个动态连接库(DLL)或某个组件对象模型(COM)类)时所引发的一系列问题.最典型的情况是,某个应用程序将要安装一个新版本的共享组件,而该组件与机器上的现有版本不向后兼容.虽然刚安装的应用程序运行正常,但原来依赖前一版本共享组件的应用程序也许已无法再工作.在某些情况下,问题的起因更加难以预料.比如,当用户浏览某些 Web 站点时会同时下载某个 Microsoft ActiveX® 控件.如果下载该控件,它将替换机器上原有的任何版本的控件.如果机器上的某个应用程序恰好使用该控件,则很可能也会停止工作.
在许多情况下,用户需要很长时间才会发现应用程序已停止工作.结果往往很难记起是何时的机器变化影响到了该应用程序.用户可能会回忆起一周前安装了一些东西,但安装与目前看到的状态并没有任何明显的关联. 更糟的是,现在很少有诊断工具帮助用户(或帮助他们的技术支持人员)确定有什么问题.
这些问题的原因是应用程序不同组件的版本信息没有由系统记录或加强.而且,系统为某个应用程序所做的改变会影响机器上的所有应用程序—现在建立完全从变化中隔离出来的应用程序并不容易.
很难建立一个隔离应用程序的一个原因是当前运行时环境只允许单独版本组件或应用程序的安装.这个限制意味着组件的编写者必须以向后兼容的方式编写他们的代码,否则当他们安装新组件的时候会有终止已有应用程序的风险.实际上,如果可能的话,编写永远向后兼容的代码是非常难的.在 .NET 中,side by side 概念是版本问题的核心."Side by side" 是在同一台机器上同时运行不同版本的相同组件的能力.使用支持并列的组件,编程人员不必努力维护严格的向后兼容,因为不同的应用程序自由使用某个共享组件的不同版本.
2 Windows中的WinSxS目录
随着系统资源越来越丰富,硬盘不那么紧张,为了解决不同程序的版本问题,微软在XP以后的操作系统中引入了一种“支持COM和共享DLL的隔离 ”机制,使用这种新的机制来管理DLL .这种机制,不仅仅被.NET平台采用,而且也被Native程序采用.
如此一来,在Windows XP以后的系统中,在“Windows”目录下就多了一个名为“WinSxS”(Windows Side-by-Side)的文件夹.系统使用这个文件夹存储各个版本的Windows XP组件,减少因为动态链接库(Dynamic Link Libraries,DLL)引起的配置问题(DLL hell).组件的多个版本都存储在这个文件夹中.Windows XP允许Win32 API组件和应用程序使用与这些程序在测试时所使用的版本完全一致的Microsoft 组件版本,并且不受其它程序或者操作系统升级的影响.Windows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据,例如COM类、接口和类型库.
3什么是Manifest
“Windows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据”,这里所说的XML文件,就是Manifest清单文件.
Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和激活,而这些信息,以往都是存储在注册表中的.另外,Manifests也制定了组成程序集的文件及Windows类.
4 Manifest的分类
在Windows XP中,事实上是在.NET中,把Manifests分类为如下几种类型:
l 程序集Manifests(Assembly Manifests):主要用于描述程序集,管理程序集的名字、版本、资源、依赖程序集.其中共享程序集的Manifests存储在Windows的WinSxS目录中.私有的程序集Manifests则存可以作为一个资源存储在DLL中,也可以存储在应用程序目录下.
l 应用程序Manifests(Application Manifests):这类Manifests则用于描述隔离应用程序,它管理着此应用程序在运行时要绑定的共享的并行组件的名字、版本.该Manifests可以作为一个文件(.manifest文件)存储在应用程序相同的目录下,也可以作为一种资源嵌入在可执行文件内部(Embed Manifest).
l 应用程序配置文件(Application Configuration Files):对于并行组件及隔离应用程序来说,使用这种Manifests来“Override and Redirect”所依赖程序集的版本.
l 发行配置文件(Publisher Configuration Files):用于重定向并行组件的版本倒另外一个合适的版本的Manifests.此时,被重定向的新程序集应该和原来的旧程序集具有相同的主.次(majou.minor)版本号.
5 Windows对于Manifest的处理
XP以前版本的windows,会像以前那样执行这个exe文件,寻找相应的dll,没有分别,Manifest只是个多余的文件或资源,dll文件会直接到system32的目录下查找,并且调用.
而XP及其以后的操作系统,则会首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)操作系统再根据DLL的Manifest提供的信息去寻找对应的DLL ,这样就可能区别不同版本的同一个DLL文件.
这就说明了为什么我的程序可以在2000下面运行,而在XP及2003上无法运行.
6 VS2005种的Manifest配置
使用Visual Studio 2005以后的一个新问题是,VS2005带的8.0新版的C运行库(VC 8.0 CRT)文件在XP以后支持manifest的Windows版本中被调用时,将会check一下Application自身的Manifest,否则将会拒绝被调用,这也就是说,使用Visual Studio开发的Application,Manifest将是必不可少的(搞不懂MS为啥要这样设置,反正与VS2003.NET不同了,也许除了MS自己说的哪些冠冕堂皇的原因,至少这样一来Linux的Wine模拟要麻烦多了)
不过,如果你的程序是静态链接的,没有使用dll,且只使用了操作系统核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等,那么你可以不需要考虑Manifest, 可以关掉它.此时,在VS2005种中,project的设置必须是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support
下面是VS2005中和Manifest相关的设置:
Project/Properties/Linker/Manifest File/Generate Manifest : 决定是否生成Manifest,如上情况才可以关闭
Project/Properties/Linker/Manifest File/Allow Isolation : 这个是设置DLL的调用的,并不能决定Manifest是否还是必须的
Project/Properties/Manifest Tool/Input and Output/Embed Manifest 决定Manifest是个单独的文件还是嵌入到exe内的资源
7 其他
与上面内容相应的是关于如何发布软件的问题,事实上只有VC6.0的CRT库是绑定作为Windows的一部分的,之后从VS.net开始,VC程序制作安装包也是要考虑库文件的,只不过VC6.0时推荐拷入System32,VC.net时推荐放在exe文件local目录,而现在VS2005则还需要考虑Manifest的问题了,看似麻烦,其实也还好,VS自带工具打包,下面一些网址也有讲如何手工做redistribution
参考网址:
http://msdn2.microsoft.com/en-us/library/ms235342.aspx
http://msdn2.microsoft.com/en-us/library/ms235265.aspx
http://msdn2.microsoft.com/en-us/library/8kche8ah.aspx
http://blog.kalmbachnet.de/?postid=54
http://blogs.msdn.com/nikolad/archive/2005/03/18/398720.aspx
如何手工做redistribution:
However, let's go back to questions I am often asked. How to redistribute VC++ libs in applocal? In Beta 1 and Beta 2 the answer is:
- Go to Windows\WinSxS and find assembly and Dlls you are interested in. For example, let's assume you are interested in the CRT and STL DLLs on x86. Then you are looking for directory x86_Microsoft.VC80.CRT_[staff]_8.0.50110.4359_[staff] with msvcr80.dll and msvcp80.dll. This 8.0.50110.4359 is the assembly version, remember it for future. Check that version of the compiler you are using matches to version of this assembly.
- Copy these two Dlls to your application local folder.
- Go to Windows\WinSxS\Manifests\ and find 636 x86_Microsoft.VC80.CRT_[staff]_8.0.50110.4359_[staff].manifest.
- Copy this manifest to application local folder.
- Rename this manifest to Microsoft.VC80.CRT.manifest. Basically name of the manifest has to match name of the assembly (it can be find on the 4th line of the manifest if you view it).
- Copy your app and Dlls and manifest to another computer where VS2005 is not installed. Try to run it and it should run
详解JAVA MANIFEST.MF
[
2009-1-4 16:30 | by viphjw ]
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的MANIFEST.MF文件内容
Debug卡的中文版完整代码表
[
2008-3-24 21:19 | by viphjw ]
代码AwardBIOSAmiBIOSPhoenixBIOS或Tandy3000BIOS
nand flash和nor flash区别
[
2007-11-29 16:30 | by viphjw ]
NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NORflash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了NANDflash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级.但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存.
相“flash存储器”经常可以与相“NOR存储器”互换使用.许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些.而NAND则是高数据存储密度的理想解决方案.
NOR的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能.
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快.应用NAND的困难在于flash的管理和需要特殊的系统接口
相“flash存储器”经常可以与相“NOR存储器”互换使用.许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些.而NAND则是高数据存储密度的理想解决方案.
NOR的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能.
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快.应用NAND的困难在于flash的管理和需要特殊的系统接口
数字签名时间戳服务器的原理
[
2007-7-14 11:42 | by viphjw ]
对于成功的电子商务应用,要求参与交易各方不能否认其行为.这其中需要在经过数字签名的交易上打上一个可信赖的时间戳(TimeStamp)从而解决一系列的实际和法律问题
GNU通用公共许可证(GPL)第三版
[
2007-7-10 15:39 | by viphjw ]
这是一份GNU通用公共授权的非官方中文简体翻译.它并非由自由软件基金会发布,也不是使用GNU通用公共授权的软件的法定发布条款——只有GNU通用公共授权的英文原版具有这样的效力.然而,我们希望这份翻译能够帮助中文读者更好的理解GNU通用公共授权
解析休眠选项为什么在Vista中不可用(含解决方案)
[
2007-6-4 09:18 | by viphjw ]
有个朋友对我说,他想在WindowsVista使用"休眠"功能来待机,但却发现"开始"菜单的电源选项菜单中没有提供"休眠"选项.而且在"关闭Windows"对话框中也没有找到"休眠"选项.难道他的电脑不支持休眠功能?
网上几种常见校验码图片分析
[
2007-6-3 14:42 | by viphjw ]
就上网找了一些参考示例,和分析了一些校验码的功能.不敢独享,整理到一起,跟大家分享
在拍人物全身照或大半身照时,被摄者的姿势及造型十分重要.要使被摄者的姿势优美,须掌握下面几个要诀
破解Windows蓝色生死符—Windows 2K/XP蓝屏全攻略
[
2007-5-7 13:16 | by viphjw ]
为什么Windows 2K/XP 会蓝屏?
NT内核的操作系统采用的是分层结构(层又称为模式),主要有用户层(User Mode)和内核层(Kernel Mode),我们可以通过下面这个形象的比喻来理解Windows 的运行规范和蓝屏起因
NT内核的操作系统采用的是分层结构(层又称为模式),主要有用户层(User Mode)和内核层(Kernel Mode),我们可以通过下面这个形象的比喻来理解Windows 的运行规范和蓝屏起因



