分类目录归档:Windows\C++编程

VC++日志类(CLogFile)

功能说明:
此类可以实现大多数应用程序日志功能,可以每天创建一个Log文件,支持中文内容。

调用方法:
1、首先在要调用的页面加入引用:#include “LogFile.h”
2、然后,写入下列代码可以正常调用:CLogFile::WriteLog(“IO错误,文件打开失败!”);

程序代码:
LogFile.h头文件

// LogFile.h: interface for the CLogFile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LOGFILE_H__6B67A565_13A5_4A20_9C35_3F4FDD9057C3__INCLUDED_)
#define AFX_LOGFILE_H__6B67A565_13A5_4A20_9C35_3F4FDD9057C3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CLogFile  
{
public:
	CLogFile();
	virtual ~CLogFile();
	static CString GetFileName();
    static CString GetFilePath();
    static BOOL WriteLog(CString LogText);
};

#endif // !defined(AFX_LOGFILE_H__6B67A565_13A5_4A20_9C35_3F4FDD9057C3__INCLUDED_)

LogFile.cpp文件

// LogFile.cpp: implementation of the CLogFile class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lineprotection.h"
#include "LogFile.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLogFile::CLogFile()
{

}

CLogFile::~CLogFile()
{

}
//获取文件名称
CString CLogFile::GetFileName()
{
	CString m_sFileName;
    m_sFileName = CTime::GetCurrentTime().Format("%Y-%m-%d") + ".log";

	return m_sFileName;
}
//获取应用程序所在路径
CString CLogFile::GetFilePath()
{   
	CString m_FilePath;
    GetModuleFileName(NULL,m_FilePath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
    m_FilePath.ReleaseBuffer();
    int m_iPosIndex;
    m_iPosIndex = m_FilePath.ReverseFind('\\'); 
    m_FilePath = m_FilePath.Left(m_iPosIndex) + "\\Log";
    return m_FilePath;
}
BOOL CLogFile::WriteLog(CString LogText)
{
	try
	{
		CFile m_File;
		CStdioFile m_SFile;
		CFileFind m_FileFind;
		CString m_sErrorMessage;
		CString m_sFileName = GetFileName();
		CString m_sFilePath = GetFilePath();
		CString m_sCurrentTime = CTime::GetCurrentTime().Format("%Y-%m-%d %X");

		m_sErrorMessage = "[" + m_sCurrentTime + "]" + "\t";
		m_sErrorMessage += LogText + "\r";
        if(!m_FileFind.FindFile(m_sFilePath))
		{
			CreateDirectory(m_sFilePath,NULL);
		}

		if(!m_SFile.Open(m_sFilePath + "\\" +m_sFileName,CFile::modeReadWrite))
		{
			m_SFile.Open(m_sFilePath + "\\" + m_sFileName,
				CFile::modeCreate | CFile::modeReadWrite | CFile::typeText);
		}

		m_SFile.SeekToEnd(); 
        char* m_szMessage;
        m_szMessage=(LPTSTR)(LPCTSTR)m_sErrorMessage;
        m_SFile.Write(m_szMessage,lstrlen(m_szMessage));   
        m_SFile.Close();
	}
	catch(CFileException fileException)
	{
		return false;
	}
    return true;
}

OLE方式操作EXCEL(很全面,供参考)

一、新建EXCEL表

COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

app.CreateDispatch(“EXCEL.Application”);

app.SetVisible(false); //设置表可见性

app.SetDisplayFullScreen(false); //设置不全屏显示

app.SetDisplayAlerts(false); //屏蔽警告

二、打开EXCEL表

char path[MAX_PATH];

GetCurrentDirectory(MAX_PATH,path); //获取当前目录

CString strPath = path;

strPath += “\\计算结果”;

books.AttachDispatch(app.GetWorkbooks(),true);

book.AttachDispatch(books.Add(_variant_t(strPath)));

三、获取工作表

sheets = book.GetWorksheets();

sheet = sheets.GetItem(COleVariant((short)1));

四、新建工作表

sheets = book.GetWorksheets();

sheets.Add(vtMissing,vtMissing,_variant_t((long)5[u1] ),vtMissing);

五、选择工作表某个区域

1、range = sheet.GetRange(COleVariant(“A1”),COleVariant(“A1”));

2、range.AttachDispatch(sheet.GetRange(_variant_t(“K39”),_variant_t(“K39”)),TRUE);

六、合并单元格

range = sheet.GetRange(COleVariant(“A1”),COleVariant(“A1”)); //先选择区域

range.Merge(_variant_t((long)0)); //再合并

七、设置单元格内容

1、单个单元格赋值

range = sheet.GetRange(COleVariant(“A1”),COleVariant(“A1”)); //先选择区域

range.SetValue2(COleVariant(“××”)); //再赋值

2、批量赋值

CString sCell; //定义字符串变量

for(int i=0; i<360; i++)

{

sCell.Format(“A%d”,i+2); //选择单元格

range = sheet.GetRange(COleVariant(sCell[u2] ),COleVariant(sCell[u3] ));

range.SetValue2(COleVariant((short)(1.5*i))); //再赋值

}

八、设定单元格字体,对齐方式,颜色,粗体,斜体,背景色,列宽,行高

Font ft; //定义字体变量

Interior it; //定义背景色变量

range = sheet.GetRange(COleVariant(“A1”),COleVariant(“A1”)); //先选择区域

range.SetHorizontalAlignment(_variant_t((long)-4131)); //水平居中对齐

range.SetVerticalAlignment(_variant_t((long)-4108)); //竖直居中对齐

range.SetColumnWidth(COleVariant(“20”)); //列宽

range.SetRowHeight(COleVariant(“25”)); //行高

ft.AttachDispatch(range.GetFont()); //匹配

ft.SetBold(_variant_t((long)0)); //设置粗体,0-不加粗;1-加粗

ft.SetItalic(_variant_t((long)0)); //设置斜体,0-不斜;1-斜

ft.SetSize(_variant_t((long)11)); //字大小

ft.SetColorIndex(_variant_t((long)5)); //字颜色

it.AttachDispatch(range.GetInterior());

it.SetColorIndex(_variant_t((long)8)); //背景色

 

说明:

对齐方式:(水平)居中:-4108 靠左:-4131 靠右:-4152

(竖直)居中:-4108 靠上:-4160 靠下:-4107

线颜色值:1-黑;2-白;3-红;5蓝;6黄;7-粉红;8-浅蓝;9-灰;10-绿;

九、获取单元格数据

COleVariant rValue,gValue; //定义COleVariant变量

CString quzhi; //定义字符串变量

range = sheet.GetRange(COleVariant(“A1”),COleVariant(“A1”));

rValue=COleVariant(range.GetValue(gValue)); //取得单元格数据

rValue.ChangeType(VT_BSTR); //数据转换格式

quzhi=rValue.bstrVal; //将单元格数据赋在字符串变量中

十、绘单元格边框

Range rg ; //定义变量

1、绘横线

CString strCell1strCell2,strCell3;

for (i=5;i<21;i++)

{

strCell1.Format(“I%d”,i*2);

strCell2.Format(“K%d”,i*2);

rg.AttachDispatch(sheet.GetRange(COleVariant(strCell1),

COleVariant(strCell2)),true);

rg.BorderAround(_variant_t((long)1),_variant_t((long)2),

_variant_t((long)1),vtMissing);

//线型 // 线宽 //颜色

}

2、绘竖线

for(i=0;i<20;i++)

{

strCell1.Format(“%c12”,(char)(‘I’+i));

strCell2.Format(“%c40″,(char)(‘I’+i));

rg.AttachDispatch(sheet.GetRange(COleVariant(strCell1)

,COleVariant(strCell2)),true);

rg.BorderAround(_variant_t((long)1),_variant_t((long)2),

_variant_t((long)3),vtMissing);

}

3、绘外框

strCell3=(CString)CHAR(i+74)+”40”;

rg.AttachDispatch(sheet.GetRange(COleVariant(“I10”),

COleVariant(strCell3)),TRUE);

rg.BorderAround(_variant_t((long)1),_variant_t((long)3),

_variant_t((long)5),vtMissing);

 

十一、保存结果

book.SaveAs(COleVariant(strPath),covOptional,

covOptional,covOptional,

covOptional,covOptional, (long)0,covOptional,covOptional,covOptional,

covOptional,covOptional);

十二、关闭表及释放变量

app.Quit();

sheet.ReleaseDispatch();

sheets.ReleaseDispatch();

book.ReleaseDispatch();

books.ReleaseDispatch();

app.ReleaseDispatch();

VC6.0无法打开文件和无法向工程添加文件的解决办法

今天用VC开发的时候,新建两个类后,发现没有要类视图那里显示,在文件那里也没看到,于是就想自己手动把这两个类加到工程中去,没想到一点添加文件就发生内存读写错误。开始以为是软件出错了,重启软件后,还是一样,接着发现连从VC 的“文件”-》的“打开”也没办法打开文件了,一样报内存读写错误。郁闷了半天,觉得可能是中毒了吧,开始找软件杀毒,弄来弄去还是出现同样的错误。

于是在网上找资料,找了很久终于让我找到了,原来是VC6.0和Visio两个软件(也可能是office 2010)有冲突,真是汗啊,都是微软的东西,居然有冲突,把Visio卸载掉,问题完全解决。 我实在是想不明白,自家的软件在自家的平台上运行,然后自己人还打起来了,只能说是无语了。

—以上摘自http://www.diybl.com/course/3_program/vc/vc_js/2008331/107733.html

解决方法:

第一步:下载“FileTool”,该文件是个压缩包,压缩包里是一个vc6.0写的工程文件,是微软提供的,看来微软是知道会出现问题的。

第二步:解压缩后用vc6.0编译该工程,生成一个dll文件。

第三步:将dll文件拷贝到vc安装目录下(安装目录下有个vc98文件夹,放到该文件夹里就行)。然后运行任意一个vc6.0工程项目,通过Tools(工具)->Customize(订制)->Add-ins And Macro Files(附加项和宏文件)点击“浏览”将刚才复制vc98文件夹里的DLL添加进去。这是就多了一个工具栏如图,“A”表示“添加”、“O”表示“打开”。以后就可以通过点击“A”把文件添加到工程了。

—以上摘自 http://blog.sina.com.cn/s/blog_4900be890100l3hi.html

【参考资料 感谢作者】

 

VC++操作Excel

1、必须先安装Excel;

2、在工程中导入Excel API:
ClassWizar->Add Class->选择excel.exe->选中全部->确定
自动添加excel.h、excel.cpp到工程

3、Ole初始化:
在InitInstance()函数,添加:AfxOleInit();

4、创建Excel模板文件:
新建一个空的xls文件,改名为tpl.xls,放到运行目录下。
API新建Excel文件时会以tpl.xls为模板。

5、读取Excel文件:

bool CMainFrame::LoadExcelFile(const char* pszExcelFile)
{
if (!pszExcelFile)
{
return false;
}

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CString sValue = “”;
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
VARIANT vRet;
// 打开Excel文件
objApp.CreateDispatch(“Excel.Application”);
objBooks = objApp.GetWorkbooks();
objBook = objBooks.Open(pszExcelFile,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional);
objSheets = objBook.GetWorksheets();
objSheet = objSheets.GetItem(COleVariant((short)1));

objRange = objSheet.GetUsedRange();
// 取行列数
vRet = objRange.GetValue(VOptional);

COleSafeArray oleSA(vRet);
long lNumRows;
long lNumCols;

oleSA.GetUBound(1, &lNumRows);
oleSA.GetUBound(2, &lNumCols);

if (lNumRows <= 1)
{
AfxMessageBox(“没有数据!”);
return true;
}

long index[2];
VARIANT vValue;
// 读取数据
for(int i=1; i<=lNumRows; ++i)
{
for(int j=1; j<=lNumCols; ++j)
{
sValue = “”;
index[0] = i;
index[1] = j;
oleSA.GetElement(index, &vValue);
switch(vValue.vt)
{
case VT_R8:
{
// 数字
sValue.Format(“%1.1f”,vValue.dblVal);
break;
}
case VT_BSTR:
{
// 文字
sValue=(CString)vValue.bstrVal;
break;
}
case VT_DATE:
{
// 日期
COleDateTime odt = COleDateTime(vValue.date);

sValue = odt.Format(“%Y-%m-%d %H:%M:%S”);
}
default:
{
break;
}
}
sValue.TrimLeft();
sValue.TrimRight();
}
}
// 关闭文件
objRange.Clear();
objBook.Close(COleVariant((short)FALSE),VOptional,VOptional);
objBooks.Close();
objApp.Quit();

return true;
}

6、新建、写入Excel文件:

bool CMainFrame::SaveExcel()
{
// 取模板文件
char szMainPath[MAX_PATH];

if (!GetModuleFileName(NULL, szMainPath, sizeof(szMainPath)))
{
return false;
}

char *pDest = strrchr(szMainPath, ‘\\’);

if (!pDest)
{
return false;
}
pDest[0] = ‘\0’;

if (szMainPath[strlen(szMainPath) – 1] != ‘\\’)
{
strcat(szMainPath, “\\tpl.xls“);
}
else
{
strcat(szMainPath, “tpl.xls”);
}
szMainPath[sizeof(szMainPath) – 1] = ‘\0’;
// 取新文件名
CFileDialog mFileDlg(FALSE, NULL,NULL,
OFN_ALLOWMULTISELECT,
_T(“Excel Files (*.xls)|*.xls|Excel2007 Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*||”),
AfxGetMainWnd());
CString strPathName;

if (mFileDlg.DoModal ()==IDOK)
{
POSITION mPos = mFileDlg.GetStartPosition();

strPathName = mFileDlg.GetNextPathName(mPos);
}
else
{
return false;
}
strPathName.MakeLower();
if (strPathName.Find(“.xls”) == -1 && strPathName.Find(“.xlsx”))
{
strPathName += “.xls”;
}
// 打开新文件
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CString sValue=””;
_Application objApp;
_Workbook objBook;
Workbooks objBooks;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;

objApp.SetAlertBeforeOverwriting(FALSE);
objApp.SetDisplayAlerts(FALSE);

objApp.CreateDispatch(“Excel.Application”);
objBooks = objApp.GetWorkbooks();
objBook = objBooks.Open(szMainPath,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional, VOptional, VOptional,  VOptional, VOptional);
objSheets = objBook.GetWorksheets();
objSheet = objSheets.GetItem(COleVariant((short)1));

objRange.AttachDispatch(objSheet.GetCells(),true);
// 写数据
for (int i=1; i<10; ++i)
{
for (int j=1; j<10; ++j)
{
CString strItem;

strItem.Format(“数据 %d – %d”, i, j);

COleVariant vItem(strItem);

vItem.ChangeType(VT_BSTR);
objRange.SetItem(COleVariant((long)(i)),COleVariant((long)(j)),vItem);
}
}
// 保存文件
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

objBook.SaveAs(COleVariant(strPathName.GetBuffer(0)),covOptional,covOptional,covOptional,
covOptional,covOptional,(long)0,covOptional,covOptional,covOptional,covOptional,covOptional);
strPathName.ReleaseBuffer();
objRange.ReleaseDispatch();
// 关闭文件
objRange.Clear();
objBook.Close(COleVariant((short)FALSE),VOptional,VOptional);
objBooks.Close();
objApp.Quit();

return true;
}

SQLSERVER2005远程连接解决办法

几个关键的点检查一下:

1、SQLServer 服务SQL Server Browser 服务是否启用。(两个服务都需要启动)

2、在Windows 防火墙中为SQL Server 2005 SQL Server Browser 服务创建例外

两个程序的地址分别为:

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe

C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe

3、为SQL 启用远程连接

找到“SQL Server 2005 外围应用配置器”,打开,单击“服务和连接的外围应用配置器”页,展开“数据库引擎”,依次单击“远程连接”和“本地连接和远程连接”,单击适用于您的环境的相应协议,然后单击“应用”。

 

注意:上述的几个修改都需要重启SQLServer服务以使更改生效。

 

若还是没有解决问题,请参考百度文库中的这篇文章:

http://wenku.baidu.com/view/8ced491755270722192ef7ec.html

EASYSIZE – VC控件根据窗口大小变化改变大小和位置

要让对话框中的控件随着对话框大小的变化进行自动调整,是一件很头疼的事情,需要在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例,极其繁琐。EasySize是一个很好解决方案,用一些宏封装了内部的实现机制,使用起来方便快捷。原文地址:http://www.codeproject.com/KB/dialog/easysize.aspx

使用方法如下:

1.首先将EasySize.h拷贝到工程文件夹中,然后在stdafx.h中包含该头文件:
#include “EasySize.h”

2.在对话框类声明中添加DECLARE_EASYSIZE宏:
class CEasySizeDemoDlg : public CDialog
{
DECLARE_EASYSIZE

3.在OnInitDialog()函数中添加INIT_EASYSIZE宏(注意有分号):
BOOL CEasySizeDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();

INIT_EASYSIZE;
return TRUE; // return TRUE unless you set the focus to a control
}

4.响应WM_SIZE消息,在响应函数中添加UPDATE_EASYSIZE宏(注意有分号):
void CEasySizeDemoDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
UPDATE_EASYSIZE;
}

5.如果需要限制对话框有一个最小尺寸,首先在资源视图中为对话框添加上最大化最小化按钮,然后Class Wizard中选择Class Info标签,在Message fileter下拉列表中选择Window,然后再点击Message Maps标签,就出现WM_SIZING消息了,添加该消息的响应函数:
void CEasySizeDemoDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialog::OnSizing(fwSide, pRect);
EASYSIZE_MINSIZE(280,250,fwSide,pRect);
}
这样就把对话框的最小尺寸限制在(280, 250)上了

6.添加控件布局映射,放到消息映射之后,基本格式如下:
BEGIN_EASYSIZE_MAP(class_name)

EASYSIZE(control,left,top,right,bottom,options)

END_EASYSIZE_MAP

class_name就是对话框类的类名

control是要设置的控件的ID

left、top、right、bottom分别指的是该控件左、上、右、下方的控件的ID,也可以为以下特殊值:
ES_BORDER:保持与边框距离不变
ES_KEEPSIZE:保持大小不变
所放位置:
left — 表示和right指定的控件右对齐
right — 表示和left指定的控件左对齐
top — 表示和bottom指定的控件上对齐
bottom — 表示和top指定的控件下对齐

options可指定为0,也可指定为以下值:
ES_HCENTER:保持宽度不变,水平位置在left和right指定的控件正中间
ES_VCENTER:保持高度不变,垂直位置在left和right指定的控件正中间

总结2:硬盘分区介绍及分区工具

分区工具:(新建主分区(最多三个),再新建“扩展分区”(只能建一个),在新扩展分区下再建立“逻辑分区”(最多建32个)。主分区和扩展分区加起来最多四个)

1.PQ8.05(Norton PartitionMagic 8.0) 图形分区工具
右键“调整大小/移动”可以在理论上不损坏已存在的数据。还可以删除,转换(ntfs、fat、fat32之间转换,主分区和逻辑分区间转换)。建立的时 候可以选择建立为主分区还是逻辑分区、分区格式(ntfs、fat32等)和大小,如果选择主分区则建立主分区,选择建立“逻辑分区”的话,是自动建一个 “扩展分区”并在扩展分区里面建立指定的“逻辑分区”,如果再新建一个“逻辑分区”的话,就会自动建立在前面建的“扩展分区”里面。
分区完成后记得在主分区上右键,“进阶”“设定为作用”,否则无法进入系统。

2.DiskGenius分区工具:
没有“调整大小”只有“删除分区”,所以不能无损地分区。在自由分区上右键“建立新分区”(可选主磁盘分区还是扩展磁盘分区、分区格式为ntfs还是 fat32等、大小)。要注意的是,建立完“扩展分区”后,要在“扩展分区”上新建“逻辑分区”。还可右键“转换为主分区/逻辑分区”。但不能在ntfs /fat32间转换,须删除后重新建立分区。
建立完成后记得在主分区上右键,“激活当前分区”。然后点工具栏中的“保存更改”会执行更改。

3.DM分区不好用。Dos指令。

注:分区完后记得把系统分区激活。

注:
一、什么是分区?
分 区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即 Format命令来实现。
安装操作系统和软件之前,首先需要对硬盘进行分区和格式化,然后才能使用硬盘保存各种信息。许多人都会认为既然是分区 就一定要把硬盘划分成好几个部分,其实我们完全可以只创建一个分区使用全部或部分的硬盘空间。不过,不论我们划分了多少个分区,也不论使用的是SCSI硬 盘还是IDE硬盘,都必须把硬盘的主分区设定为活动分区,这样才能够通过硬盘启动系统。
二、扩展分区和逻辑分区:
DOS和FAT文件 系统最初都被设计成可以支持在一块硬盘上最多建立24个分区,分别使用从C到Z 24个驱动器盘符。但是主引导记录中的分区表最多只能包含4个分区记录,为了有效地解决这个问题,DOS的分区命令FDISK允许用户创建一个扩展分区, 并且在扩展分区内在建立最多23个逻辑分区,其中的每个分区都单独分配一个盘符,可以被计算机作为独立的物理设备使用。关于逻辑分区的信息都被保存在扩展 分区内,而主分区和扩展分区的信息被保存在硬盘的MBR内。这也就是说无论硬盘有多少个分区,其主启动记录中只包含主分区(也就是启动分区)和扩展分区两 个分区的信息

二、硬盘分区方式
我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。
主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。
扩 展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故 主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应 用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。
所谓扩展分区,严格地讲它不是一个 实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的 分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多 少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。
需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。

三、FAT32和NTFS:
NTFS 是指“New Tec. Files Sys.”,是以簇为单位来存储数据文件,但NTFS中簇的大小并不依赖于磁盘或分区的大小。簇尺寸的缩小不但降低了磁盘空间的浪费,还减少了产生磁盘碎 片的可能。NTFS支持文件加密管理功能,可为用户提供更高层次的安全保证。是Windows NT/2000/XP专用格式,它能更充分有效地利用磁盘空间、支持文件级压缩、具备更好的文件安全性。

如果只安装Windows 2000/XP,建议选择NTFS文件系统。如果多重引导系统,则系统盘(C盘)必须为FAT16或FAT32,否则不支持多重引导。当然,其他分区的文件系统可以为NTFS。

FAT32 文件系统不仅兼容最常用的Windows XP,而且兼容DOS、95、98、NT、ME、2000、2003。而NTFS只兼容2000及其以后的Windows产品,而且最新的Windows VISTA据我了解只能安装在NTFS文件系统的分区里。所以FAT32似乎正在走向过时,而且NTFS不易产生磁盘碎片,比较稳定。而且诸如Ghost 这类在DOS下的系统维护工具也提供了良好的NTFS支持。

————by 王磊 2012.5.10

总结1:安装和还原系统的方法

方法1.系统盘安装:利用制作好的带引导的系统安装盘,开机进入引导,后安装。

方法2.进入PE后安装:进入WinPE,打开虚拟光驱,加载硬盘中的(对于任意版PE作为开机启动,都可识别硬盘)或者光盘中的(对于光盘版PE作为开机启动,才能识别光盘)系统盘镜像以安装。

方法3.进入PE后还原:(这种方法中的两种情况都不用重启电脑)
(1)进入WinPE,启动WinPE中的“easy ghost”。
具体操作方法:在左下角的还原系统处,加载硬盘中的(对于任意版PE作为开机启动,都可识别硬盘)或者光盘中的(对于光盘版PE作为开机启动,才能识别光盘)系统备份.GHO文件以还原,并指定要覆盖的分区。
(2)或者启动“开始”“程序”里面的“诺顿ghost32”,GHO文件存储位置的要求同(1)。
具体操作方法:
<1>.选择local,partion from image(从镜像到分区),然后选择“Image  file name to restore from”(要恢复的镜像文件),找到备份的.GHO文件后点“Open”。
<2>.然后会弹出“Select source patition from image file”,选择镜像文件中的源分区,点“OK”。
<3>.选择“Select local destination drive by clicking on the drive number”,选择目标磁盘驱动器,选择”OK”
<4>.在”Selcet destination partion(s) from Basice drive”对话框中,选择目标分区,选择”OK”.(在目标磁盘中选择要覆盖的分区)
<5>.在”Question:”对话框中,择”YES”,开始创建镜像文件,选择”NO”,返回主菜单。

方法4.光盘还原:进入引导中有“系统还原”的光盘(可以是系统盘或者PE盘),进入ghost,然后还原。
具体操作方法:同方法3(2)。

方法5.onekey ghost还原:(此方法,onekey ghost必须在硬盘中启动,且.GHO文件必须在硬盘中)
在 硬盘系统能进入的前提下,运行非系统分区下的onekey ghost,或者开机启动项里面的onekey ghost(如果以前用过onekey ghost的话启动项中就会有此项,能启动的前提是onekey ghost程序所在的位置没有改变,且程序没有损坏)。如果硬盘系统已损坏,可以进入开机启动项里面的onekey ghost,或者进入PE,然后运行桌面上的“安装PE到硬盘”,会自动安装PE到非系统盘,然后进入硬盘PE,再启动硬盘中的onekey 加载硬盘中的.GHO。
具体操作方法:同方法3(2)。

(任意PE指可以是光盘版,U盘版,或者是安装到非系统盘的硬盘版)

————by 王磊 2012.5.9

如何检测和避免内存泄漏

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见Steve Maguire的<<Writing Solid Code>>。

如果要检测堆内存的泄漏,那么需要截获住malloc/realloc/free和new/delete就可以了(其实new/delete最终也是用malloc/free的,所以只要截获前面一组即可)。对于其他的泄漏,可以采用类似的方法,截获住相应的分配和释放函数。比如,要检测BSTR的泄漏,就需要截获SysAllocString/SysFreeString;要检测HMENU的泄漏,就需要截获CreateMenu/ DestroyMenu。(有的资源的分配函数有多个,释放函数只有一个,比如,SysAllocStringLen也可以用来分配BSTR,这时就需要截获多个分配函数)

在Windows平台下,检测内存泄漏的工具常用的一般有三种,MS C-Runtime Library内建的检测功能;外挂式的检测工具,诸如,Purify,BoundsChecker等;利用Windows NT自带的Performance Monitor。这三种工具各有优缺点,MS C-Runtime Library虽然功能上较之外挂式的工具要弱,但是它是免费的;Performance Monitor虽然无法标示出发生问题的代码,但是它能检测出隐式的内存泄漏的存在,这是其他两类工具无能为力的地方。

WINDOWS系统文件详解

我们每天都在使用Windows,可你对它的系统文件熟悉吗?所谓的系统文件一般指的是与Windows有密切关系的,系统正常运作所离不开的文件。这些文件绝大多数位于System32目 录下(X:\Windows\System32\) 以及系统文件备份目录DllCache下(X:\Windows\System32\Dllcache\)(“X”是你的XP系统所在的分区)他们一般是以dll文件的形式存在的,其次还有cpl(控制面版)等其他一些格式的文件。

我们所看到的Windows外观的元素(图标、位图、对话框、文字等)就储存在这些文件当中,例如资源管理器(Explorer)和IE的工具栏上面的前进、后退等按钮图案,就是以位图的形式存在与shell32.dll文件中的。

下面的文章中我们就将介绍各种Windows操作系统文件夹的作用。

A ↑
ACCESS.CHM – Windows帮助文件
ACCSTAT.EXE – 辅助状态指示器
ADVAPI32.DLL – 高级Win32应用程序接口
AHA154X.MPD – SCSI驱动程序
AM1500T.VXT – 网卡驱动程序
AM2100.DOS – 网卡驱动程序
APPSTART.ANI – 动画光标
APPS.HLP – Windows帮助文件
AUDIOCDC.HLP – “易码编码解码器”帮助文件
AWARDPR32.EXE – 增加打印机工具

B ↑
BIGMEM.DRV – BIGMEM虚拟设备
BILLADD.DLL – 动态链接库(支持MSW)
BIOS.VXD – 即插即用BIOS接口
BUSLOGIC.MPD – SCSI驱动程序

C ↑
CALC.EXE – 计算器应用程序
CANNON800.DRV – 佳能打印机驱动程序
CHOICE.COM – MSDOS命令
CHS16.FON – 字体文件(16点阵中文)
CANYON.MID – MIDI文件例子
CARDDRV.EXE – PCMCIA支持程序
CDFS.VXD – CDROM文件系统
CDPLAYER.EXE – CD播放器应用程序
CDPLAYER.HLP – CD播放器帮助文件
CHIPS.DRV – 芯片技术显示驱动程序
CHKDSK.EXE – DOS磁盘检查工具
CHOOSUSR.DLL – 网络客户
CHOKD.WAV – 声音文件例子
CIS.SCP – 脚本文件(演示如何建立与Compuserve的PPP连接)
CLAIRE~1.RMI – MINI序列
CLIP.INF – 安装信息文件(剪粘板查看器)
CLOSEWIN.AVI – 影片剪辑(AVI)(如何关闭窗口)
CMC.DLL:Mail – API1.0公共信息调用
COMBUFF.VXD – COM端虚拟设备
COMCTL32.DLL – 32位Shell组件
COMDLG32.DLL – 32位公共对话库
COMIC.TIF – TrueType字体文件(Comic Sans Ms)
COMMAND.COM – 公共对话库
COMMDLG.DLL – 16位公共对话库
COMMON.HLP – OLE帮助文件
COMPOBJ.DLL – OLE16/32互*作库
CONAGEN.EXE – 32位控制支持
CONFAPI.DLL – Microsoft网络组件
CONFIG.SYS – 配置文件
CONFIG.TXT – 自述文件(配置文件中如何使用命令)
CONTROL.EXE – “控制面板”应用程序
COOL.DLL – 统一资源定位文件
COPY.INF – 安装信息文件
CP-1250.NLS – 自然语言支持文件
CPQNDIS.DOS – 网卡驱动程序
CPQNDIS3.VXD – Compaq以太控制器NDIS驱动程序
CR3240.EXE – DOS6.22中文版CR3240打印机驱动程序
CRTDLL.DLL – Microsoft C运行时间库
CSETUP.EXE – MSDOS6.22中文设置程序
CSETUP.WIN – CSetup.exe支持文件
CSMAPPER.SYS – 系统文件(支持PCMCIA)
CSPMAN.DLL – 动态链接库(SoundBlaster 16 Driver)
CTRLPAN.EXE – MSDOS命令(系统控制台程序)
CTRLPAN.EXE – MSDOS6.22中文版控制程序

D ↑
DBLBVFF.SYS – 双缓冲驱动程序
DC21X4.SYS – NDIS3驱动程序
DCIMAN.DLL – 显示控制接口
DCIMAN32.DLL – 显示控制接口
DDEML.DLL – DDE信息库
DEBMP.DLL – 光栅显示设备
DEBUG.EXE – Debug调试工具
DECPSMW4.INF – 安装信息文件(DEC打印机安装)
DECLAN.VXD – DECLAN网卡驱动程序
DEFRAG – 打开”选定驱动器”窗口
DEL.INF – 安装信息文件
DELTEMP.COM – 初始化帮助工具
DELTREE.EXE – 删除目录工具
DEMET.DLL – 向量显示工程
DESKCP16.DLL – 16位桌面控制面板
DESKTOP.MSN – Microsoft网络组件
DESS.DLL – 表格显示工程
DEWP.DLL – 字处理显示工程
DIALER.CNT – 对话帮助
DIALER.EXE – 电话拨号程序
DIALER.HLP – 电话拨号帮助文件
DIALMON.EXE – 拨号监视程序(IE2.0)
DIBENG.DLL – 独立设备的位同工程
DICONIX.DRX – 打印机驱动
非常棒哦^__^.WAN – 声音文件例子
DIRECTCC.EXE – 直接线缆连接应用程序
DISKCOMP – 磁盘比较工具
DISKCOPY.COM – 磁盘拷贝工具
DISKDRV.INF – 安装信息
DISPLAY.TXT – 显示卡README文件
DMCOLOR.DLL – 通用打印驱动程序彩打支持库
DOSKEY.COM – DOS命令
DOSX.EXE – MSDOS配置程序
DRAGDROP.AVI – 影片剪辑(AVI)(如何使用拖拽)
DRIVER.SYS – DOS驱动程序
DRVSPACE.EXE – 磁盘压缩工具
DRVSPACE.HLP – 磁盘空间管理帮助文件

E ↑
EDIT.COM – DOS文字编辑程序
EDLIN.EXE – DOS行编辑器
EE16.VXD – 虚拟设备驱动程序
EISA.VXD – 即插即用EISA总线计数器
EK550C.ICM – 打印机简介
EMM386.EXE – 扩展内存管理程序
ENABLE.INF – 初始化信息
ENGCT.EXE – MSN支持文件
ESCP24SC.DRV – 设备驱动程序
EUDCEDIT.CNF – 帮助索引文件(造字程序)
EUDCEDIT.EXE – 造字程序
EUDCEDIT.HLP – 帮助文件(造字程序)
EUDCEDIT.INF – 安装信息文件(造字程序)
EVX16.DOS – 网卡驱动程序
EWRK3.DOS – 网卡驱动程序
EWRK3.SYS – 网卡驱动程序
EXCEL.XLS – Excel5.0文件模板
EXCEL4.XLS – Excel4.0文件模板
EXCHANGE.TXT – Inbox和Exchange的自述文件
EXCHNG.CNT – Mail/Exchange帮助文件内容
EXCHNG.HLP – Mail/Exchange组件
EXCHNG32.EXE – 对用户的交换机作初始设置
EXPLORER.AVI – 影片剪辑(AVI)(如何使用资源管理器)
EXPLORER.EXE – “资源管理器”应用程序
EXPO.HLP – 帮助文件(产品信息)
EXPOSTRT.EXE – 产品信息应用程序
EXTRACT.EXE – 解压缩工具
EXTRA.TXT – 自述文件(联机访问附加文件)

F ↑
FAQ.TXT – 疑难解答自述文件
FAXCODEC.DLL – 传真编码/译码器
FAXCOVER.EXE – 封面编辑器
FC.EXE – DOS命令,比较两个文件
FD16-700.MPD – SCSI驱动程序
FD8XX.MPD – SCSI驱动程序
FDISK.EXE – DOS命令,在硬盘上建立、删除及显示当前分区
FILESEC.VXD – 文件存取控制管理器
FILEXFER.CNT – 文件传输帮助文件内容
FILEXFER.EXE – Microsoft文件传输
FIND.AVI – 影片剪辑(如何使用查找)
FIND.EXE – 寻找指定字符串命令
FINDMVI.DLL – 媒体视觉支持
FINSTALL.DLL – 字库安装程序
FINSTALL.HLP – 字库安装帮助文件
FLSIMTD.VXD – PCMCIA支持
FLSIMTD.VXD – PCMCIA支持
FONT16.EXE – DOS6.22中文版16点阵字体驱动程序
FONTS.INF – 字体选择初始化信息
FONTVIEW.EXE – 字体浏览程序
formAT.COM – DOS磁盘格式化工具
FOUTLINE.EXE – 轮廓字体驱动程序
FRAMEBUF.DRV – SVGA显示器驱动程序
FTE.DLL – 声音浏览文件传输工程文件
FTP.EXE – 文件传输协议TCP工具
FURELI~1.RMI – MINI序列

G ↑
GBK.TXT – 中文Windows95GBK代码集字符定义表
GDI.EXE – 简版WIN3.1图形界面
GDI32.DLL – 32位GDI图形界面
GENERAL.IDF – 一般MIDI指示器
GRPCONV.EXE – Windows程序组转换器
GUIDE.EXE – 应用程序(MSN)

H ↑
HARDWARE.TXT – 硬件自述文件
HOSTS.SAM – TCP配置
HPCLRLSK.ICM – 打印简介
HPDESK.ICM – 打印机简介表
HPDSKJET.DRV – 打印机驱动程序
HPEISA.VXD – 网络适配器驱动程序
HPJAHLP.CNT – JetAdmin程序帮助文件
HPJD.DLL – HPJetAdmin支持程序
HPLAN.DOS – 网络适配器驱动程序
HPLJ300.DRV – HPLJ300DPI打印机驱动程序
HPLJ300.EXE – MSDOS命令(HP打印机驱动)
HPLJ-31.SPD – 打印机驱动程序
HPLJ600.DRV – HPLJ600DPI打印机驱动程序
HPLJP-V4.INF – 打印机安装信息
HPNETPRN.INF – HPJetAdmin支持程序
HPPJXL31.SPD – 打印机驱动程序
HPPLOT.DRV – 打印机驱动程序
HPPLOT.HLP – 打印机驱动程序帮助文件
HPPRARBK.DLL – HPJetAdmin支持程序
HPPRARRK.HLP – HPJetAdmin支持程序帮助文件
HPVCM.HPM – 打印机驱动程序
HSFLOP.PDR – HSFLOP虚拟设备
HTICONS.DLL – 终端设备动态链接库
HYPERTRM.CNT – 终端设备帮助文件
HYPERTRM.EXE – 终端设备应用程序
HYPERTRM.HLP – “超级终端”帮助
HZKBD.EXE – 常用输入方法程序
HZVIO95.EXE – 显示驱动程序

I ↑
I82593.DOS – 网络适配器驱动程序
IB401917.SPD – 打印机驱动程序
IBM20470.SPD – 打印机驱动程序
IBM20K.DOS – 网络适配器驱动程序
ICM32.DLL – 图象颜色匹配程序
ICMOI.DLL – 用户界面颜色匹配程序
ICONLIB.DLL – 图符库
IEXPLORE.CNT – 帮助索引文件(IE)
IEXPLORE.EXE – InternetExplore
IEXPLORE.HLP – 帮助文件(IE)
IFSHLP.SYS – 文件系统安装帮助文件
IFSMGR.VXD – 文件系统安装管理程序
IMAGEOIT.EXE – 图象编辑器光标程序
IMCLIENT.DLL – Microsoft网络组件
IME.CNT – 帮助索引文件(中文输入法)
IME.HLP – Windows帮助文件
IME.INF – 安装信息文件(中文输入法)
IMEGEN.CNF – 帮助索引文件(输入法生成器)
IMEGEN.EXE – 输入法生成器
IMEGEN.HLP – 帮助文件(输入法生成器)
IMEINFO.INI – 输入法初始化文件
IMM32.DLL – WIN32IMM应用程序界面
INBOX.EXC – 邮件组件
INDICDLL.DLL – 多语言组件
INET.TXT – IE自述文件
INET16.DLL – 动态链接库(支持IE2.0)
INETAB32.DLL – 动态链接库(支持Internet mail)
INETCFG.DLL – 动态链接库(支持IE2.0)
INETCPL.CPL – 控制面板文件(配置IE2.0)
INETMAIL.INF – 安装信息文件(Internet mail)
INETWIZ.EXE – Internet安装向导
INformS.WPF – 样板文件
INSTBE.BAT – Microsoft网络组件
INSTDICT.EXE – MSDOS命令(输入法安装程序)
INTB.VXD – 13号中断虚拟设备
INTL.CPL – 控制面板
INT-MAIL.CNT – 帮助索引文件(Internet mail)
IOS.INI – 设置需要安全保护的程序
IOSCLASS.DLL – CDROM安装程序
IRMATR.DOS – 网络适配器驱动程序
ISAPNP.VXD – ISA总线即插即用程序

J ↑
JOY.CPL – 游戏杆控制面板
JOYSTICK.INF – 多媒体安装信息
JP350.DRV – 打印机驱动程序
JUNGLE~1.WAV – 声音文件

K ↑
KBDBE.KBD – 比利时键盘格式
KBDBR.KBD – 巴西键盘格式
KBDCA.KBD – 法国、加拿大键盘格式
KBDOS.KBD – 美国键盘格式
KDCOLOR1.SPD – 打印机驱动程序
KERNEL32.DLL – 32位内核
KEYB.COM – 将控制键盘程序装入内存
KODAKCE.ICM – 柯达ICC配置文件
KRNL386.EXE – Core应用程序

L ↑
LABEL.EXE – DOS命令,设置磁盘名称
LFNBK.EXE – 长文件名备份文件
LFNBK.TXT – LFNBK的自述文件
LICENSE.HLP – Windows帮助文件
LMSCRIPT.EXE – LAN管理器文稿处理程序
LOGIN.EXE – Win95登录NetWare文件
LQ1600K.EXE – LQ1600K打印驱动程序

M ↑
MAILMSG.DLL – 微软网络组件
MAILOPT.INF – MAIL/MAPI设置文件
MAPI.DLL – Mail/Exchange组件
MCIAVI.DRV – 多媒体驱动程序
MCICDA.DRV – MCICD声音驱动程序
MCIOLE.DLL – MCIOLE句柄
MCIPIONR.DRV – MCI光盘驱动程序
MCISEQ.DRV – MCI定序器驱动程序
MCIVISCA.DRV – MCIVCR驱动程序
MCIWAVE.DRV – MCI Ware驱动程序
MDMNOKIA.INF – 安装信息文件(modem)
MDMNOVA.INF – 安装信息文件(modem)
MDMVV.INF – 安装信息文件(modem)
MEMMAKER.EXE – 内存管理程序
MEMMAKER.INF – 内存管理程序设置信息
MFCUIA32.DLL – OLEI公共对话动态链接库
MIDI.INF – 即插即用MIDI设备信息
MINET32.DLL – 支持Internet Mail动态链接库
MKECR5XX.MPD – SCSI驱动程序
ML3XEC16.EXE – 应用程序(MAPI)
MLSHEXT.DLL – 微软核扩展库
MMCI.DLL – 媒体类安装程序
MMDEVLDR.VXD – 即插即用设备装载程序
MMDRV.HLP – 多媒体帮助文件
MMSOUND.DRV – 多媒体驱动程序
MMSYSTEM.DLL – 多媒体系统内核
MMTASK.TSK – 多媒体背景任务交换器
MODE.COM – DOS命令
MODERN.FON – 字体文件(modem)
MORE.COM – DOS命令
MOUSE.DRV – 鼠标驱动程序
MOVEWIN.AVI – 影片剪辑(如何移动窗口)
MPLAYER.EXE – 媒体播放程序
MPR.DLL – WIN32网络接口动态链接库
MSAB32.DLL – 微软网络地址簿
MSBASE.INF – 设置信息
MSCDEX.EXE – DOS MSCDEX CDROM扩展工具
MSCDROM.INF – 类安装设置信息
MSD.EXE – 微软诊断工具
MSD.INI – 微软诊断初始化
MSDET.INF – 系统检测设置信息
MSDISP.INF – 显示设置信息
MSDLG.EXE – 数据链接控制协议
MSDOS.INF – 设置信息
MSDOSDRV.TXT – 设备驱动程序自述文件
MSFT.VRL – 统一资源定位文件
MSGSRV32.EXE – Windows32位虚拟设备信息系统
MSHDC.INF – 硬盘控制设置信息
MSJSTICK.DRV – 即插即用游戏杆驱动程序
MSMAIL.INF – Mail/MAPI初始化
MSMOUSE.INF – 鼠标设置信息
MSN.TXT – 微软网络自述文件
MSNET32.DLL – 微软32位网络API库
MSNEXCH.EXE – 微软网络设置程序
MSNPSS.HLP – 微软网络帮助文件
MSNVER.TXT – 微软网络帮助信息
MSPAINT.EXE – 画图工具
MSPCIC.DLL – PCMCIA类安装与控制工具
MSPORTS.INF – 公共设置信息
MSPP32.DLL – 微软网络打印支持程序
MSPWL32.DLL – 口令清单管理库
MSSBLST.DRV – 声霸卡驱动程序
MSSBLSI.VXD – 声霸卡驱动程序
MSSHRVI.DLL – 共享内核扩展程序
MSSNDSYS.DRV – Windows声音系统驱动程序
MSSP.VXP – Windows NT安全支持
MSTCP.DLL – TCP用户界面
MSVIEWUT.DLL – 显示设备服务数据链接库
MTMMINIP.MPD – SCSI驱动程序
MULLANG.INF – 多种语言字体支持设置信息
MVIWAVE.DRV – 声音驱动程序

N ↑
NBTSTAT.EXE – TCP工具
NDDEAPI.DLL – Workgroups DDE共享接口
NDDENB.DLL – 微软网络DDE NetBIOS接口
NDISHLP.SYS – 实模式NDIS支持驱动程序
NET.EXE – 实模式网络客户软件
NET.INF – 网络检测信息
NET.MSG – 网络客户信息
NET3COM.INF – 网络设置信息
NETAMD.INF – 网络设置信息
NETAPI.DLL – 网络应用程序接口动态链接库
NETAPI32.DLL – 32位网络API动态链接库
NETAVXT.INF – MS内部传输文件
NETBEUI.VXD – 32位NetBEUI协议
NETBIOS.DLL – NetBIOSAPI库
NETDCA.INF – 安装信息文件
NETDDE.EXE – Windows网络动态数据交换
NETDET.INI – NetWare检测文件
NETDI.DLL – 网络设备安装
NETH.MSG – 网络客户帮助信息
NETOS.DLL – NOS检测DLL
NETWATCH.EXE – 网络观测程序
NETWORK.TXT – 网络信息自述文件
NOTEPAD.EXE – 记事本应用程序
NODRIVER.INF – 即插即用设备信息
NOTEPAD.EXE – NOTEPAD文件
NSCL.VXD – NSCL虚拟设备
NW16.DLL – NetWare客户
NWAB32.DLL – 地址簿支持动态链接库
NWLSCON.EXE – 登录文稿控制台程序
NWLSPROC.EXE – NetWare登录处理器
NWNET32.DLL – NetWare客户
NWNP32.DLL – NetWare组件
NWREDIR.VXD – NetWare重定向
NWSERVER.VXD – NCP服务
NWSP.VXD – NCP服务安全提供
OEMREVA.INF – 安装信息文件
OLE2.DLL – OLE2.0动态链接库
OLE2.INF – OLE设置信息
OLE32.DLL – 32位OLE2.0组件
OLEAUT32.DLL – OLE2-32自动化
OLECL1.DLL – 对象链接与嵌入客户库
OLEDLG.DLL – Windows OLE2.0用户接口支持
OLESVR.DLL – 对象链接与嵌入服务端库
OLETHK32.DLL – OLE形实替换程序库

P ↑
PACKAGER.EXE – 对象包装程序
PARALINK.VXD – 远程网络存取并行口驱动程序
PBRVSH.EXE – “画图”应用程序
PDOS95.BAT – 进入中文DOS状态
PERF.VXD – 系统性能监视器
PIFMGR.DLL – 程序信息文件管理服务程序
PING.EXE – TCPPing工具
PMSPL.DLL – LAN管理应用程序接口
POWER.DRV – 高级电源管理驱动程序
PPPMAC.VXD – Windows虚拟PPP驱动程序
PRINT.EXE – DOS打印文件
PRINTERS.TXT – 打印信息自述文件
PROGMAN.EXE – 程序管理器
PRTVPD.INF – 打印机升级设置信息

Q ↑
QUIKVIEW.EXE – 快速查看
QUIT.EXE – 退出中文DOS状态

R ↑
README.TXT – Windows95自述文件
REGEDIT.EXE – 注册编辑器
REGSERV.EXE – 远程注册
REGWIE.EXE – 注册工具
REGSERV.INF – 远程注册
RESTORE.EXE – DOS命令
RNAAPP.EXE – 拨号网络应用程序
RNASERV.DLL – 远程网络存取服务
RNASETUP.DLL – 远程网络存取设置动态链接库
RNATHUNK.DLL – 远程网络存取转换支持动态链接库
RNAUI.DLL – 远程网络存取用户接口DLLRNDSRV32.DLL复制服务程序
ROBOTZCL.WAV – 声音文件
ROBOTZWI.WAV – 声音文件
ROMAN.FON – 字型文件
ROUTE.EXE – TCP/IP ROUTE命令
RPCLTC1.DLL – 远程调用库
RPCNS4.DLL – 远程调用库
RPCPP.DLL – 远程调用打印驱动
RPCRT4.DLL – 远程调用库
RPCSS.EXE – 远程调用结点映象
RPLBOOT.SYS – 远程程序装入
RPLIMAGE.DLL – 远程程序装入磁盘映象器
RSRC16.DLL – 资源计量器
RSRCMTR.EXE – 资源计量器
RSRCMTR.INF – 资源计量器
RUMOR.EXE – DDE测试/游戏
RUNDLL.EXE – 把DLL作为应用程序运行
RUNDLL32.EXE – 32位壳组件

S ↑
S3.DRV – S3显示驱动
S3.VXD – S3虚拟设备
SACLIEN.DLL – Microsoft网络组件
SAMPLEVIDEOS – 图象文件
SAPNSP.DLL – Winsock数据连接库
SAVE32.COM – 安装时所需的TSR文件
SB16.VXD – 16位声卡虚拟设备
SB16SND.DRV – 16位声卡驱动
SBAWE.VXD – AWE声卡虚拟设备
SBAWE32.DRV – AWE声卡驱动
SBFM.DRV – 16位声卡驱动
SCANDISK.BAT – MSDOS6.x Scandisk的替代存根模块SCANDISK.BAT磁盘诊断工具
SCANDISK.INI – 磁盘诊断工具
SCANDISK.PIF – 安装磁盘诊断工具时的PIF文件
SCANDSKW.EXE – 磁盘扫描工具
SCANPROG.EXE – 磁盘扫描工具
SCRNSAVE.SCR – 屏幕保护
SCSI.INF – SCSI安装文件文件名描述
SCSIIHLP.VXD – SCSI支持文件
SCSIPORT.PDR – SCSI虚拟设备口
SECUR32.DLL – Microsoft Win32安全服务
SECURCL.DLL – Microsoft网络组件
SEIKO24E.DRV – 打印机驱动
SEIKOSH9.DRV – 打印机驱动
SERIAL.VXD – 串口VCOMM驱动器
SERIFE.FON – 字型文件
SERVER.HLP – 服务器帮助文件
SE小乖IR.EXE – SBS文件
SETUP.BIN – 安装支持文件
SETUP.BMP – 安装Wash位图文件
SETUP.EXE – Windows95安装程序
SETUP.INF – 安装信息文件
SETUP.TXT – 安装时的README文件
SETUP4.DLL – 安装支持文件
SETUPPP.INF – 安装信息
SETUPX.DLL – 安装支持
SETVER.EXE – MSDOS版本显示,该程序可在网络上执行
SF4029.EXE – 打印机驱动
SHARE.EXE – MSDOS共享实用程序
SHELL.INF – 安装壳信息
SHELL.VXD – 虚拟壳设备
SHELL2.INF – 颜色组合
SHELL3.INF – 颜色组合
SIZE1-1.CUR – 光标
SIZE1-M.CUR – 光标
SIZE4-M.CUR – 光标
SIZENESW.ANI – 活动光标
SIZEWE.ANI- 活动光标
SKPSFA-1.SPD – 打印机驱动
SLAN.DOS – 网络适配器驱动
SLCD32.MPD – SCSI驱动器
SLENH.DLL – 高级节能选项
SMALLE.FON – 字型文件
SMALLF.FON – 字型文件
SMARTDRV.EXE – 超高速缓存程序
SMARTND.DOS – 网络适配器驱动器
SMC3000.DOS – 网络适配器驱动器
SMC9000.VXD – 网络适配器驱动器
SNAPSHOT.EXE – 抽点
SNAPSHOT.VXD – 抽点虚拟设备
SNDREC32.EXE – 录音机
SNIP.VXD – 网络适配驱动器
SOCKET.VXD – Windows虚拟Socket网卡驱动器SOCKET.VXD PCMCIA支持
SOL.CNT – 纸牌游戏
SOL.HLP – 纸牌游戏帮助文件
SORT.EXE – MSDOS分类实用程序
SOUNDREC.CNT – 录音机帮助文件内容
SOUNDREC.HLP – 录音机帮助文件
SPARROW.WPD – SCSI驱动器
SPARROWX.MPD – SCSI驱动器
SPOOL32.EXE – 打印机支持
SPOOLER.VXD – 打印机共享虚拟设备
SRAMMTD.VXD – PCMCIA支持
SSERIFE.FON – 字型文件
SSERIFF.FON – 字型文件
SSFLYWIN.SCR – 屏幕保护
SSSTARS.SCR – 屏幕保护
STAR24E.DRV – 打印机驱动
STAR9E.DRV – 打印机驱动
START.EXE – 启动程序
STATE.PBK – Microsoft网络组件
STDOLE.TLB – OLE2.0文件
STDOLE32.TLB – OLE2-32文件
STEMO409.DLL – Windows95帮助文件的DLL
STLSO4SS.SPD – 打印机驱动程序
STLS577U.SPD – 打印机驱动程序
STORAGE.DLL – OLE存储器管理库
STRN.DOS – 网络适配器驱动
SUBST.EXE – MSDOS Subst实用程序
SUEXPAND.DLL – LZ DLL安装
SUHELPER.BIN – 安装支持
SUPERVGA.DRV – 高级VGA显示驱动
SURPORT.TXT – PSS支持信息
SVCPROP.DLL – Microsoft网络组件
SVRAPI.DLL – 32位公用服务器API实用程序
SXCIEXT.DLL – Matrox显示驱动支持文件
SYMBOLE.FON – 字型文件
SYS.COM – MSDOS系统实用程序
SYSCLASS.DLL – 系统类库安装
SYSDETMG.DLL – 系统检测库
SYSEDIT.EXE – 系统编辑器
SYSLOGO.RLE – 系统标识
SYSMON.EXE – 系统监控程序
SYSMON.HLP – 系统监控帮助
SYSTEM.DRV – 最小Win3.1标准模式
SYSTHUNK.DLL – Windows系统形实替换程序库
SYSTRAY.EXE – 高级节能管理

T ↑
T128.MPD – SCSI驱动器
T160.MPD – SCSI驱动器
T20N3.VXD – 网络适配驱动器
T30ND.DOS – 网络适配驱动器
T338.MPD – SCSI驱动器
TADA.WAV – 声音文件
TAPI.DLL – API通话程序
TAPI.INF – API通话安装信息文件
TAPI32.DLL – 32位形实替换
TAPIADDR.DLL – API通话程序
TAPIEXE.EXE – API通话组件
TAPIINI.EXE – API通话组件
TASKMAM.EXE – 任务管理器
TCCARC.DOS – 网络适配驱动器
TCTOKCH.VXD – 网络适配驱动器
TELEPHON.CPL – 通话帮助
TESTPS.TXT – PostScript测试
TEXTCHAT.EXE – Microsoft网络组件
THEMIC-1.WAV – 声音文件
THINKJET.DRV – 打印机驱动
THREED.VBX – Windows95浏览
T1850.DRV – 打印机驱动
TIMEDATE.CPL – 时间/日期控制面板
TIMES.TTF – 时间字型
TIMESBD.TTF – 时间粗体字型
TIMESBI.TTF – 时间粗斜体字型
TIMESI.TTF – 时间斜体字型
TIMEZONE.INF – 安装信息
TIMLP232.SPD – 打印机驱动
TIPS.txt – 提示和技巧自述文件
TKPHZR32.SPD – 打印机驱动
TLNK.DOS – 网络适配驱动器
TLNK3.VXD – 网络适配驱动器
TMV1.MPD – SCSI驱动器
TOOLHELP.DLL – 16位开发工具帮助器
TOSHIBA.DRV – 打印机驱动
TOUR.EXE – 浏览文件
TPHAIII.ICM – 打印机简介
TRACERT.EXE – TCP/IP IRACEROUTE命令
TREE.COM – MS DOS树实用程序
TREEEDCL.DLL – Microsoft网络组件
TREENVCL.DLL – Microsoft网络组件
TRIUMPHI.SPD – 打印机驱动
TSD32.DLL – 声音压缩管理器
TSENG.DRV – ET4000W32显示驱动
TTY.DRV – 打印机驱动
TTY.HLP – TTY打印机驱动帮助
TYPELIB.DLL – OLE2.0

U ↑
U9415470.SPD – 打印机驱动
UBNEI.DOS – 网络适配器驱动
ULTRA124.MPD – SCSI驱动器
ULTRA24F.MPD – SCSI驱动器
UMDM16.DLL – 通用调制解调器驱动组件
UMDM32.DLL – 通用调制解调器驱动组件
UNIDRV.DLL – Microsoft通用打印机驱动库
UNIDRV.HLP – 通用打印机驱动帮助
UNIMODEM.VXD – 通用调制解调器驱动
USER32.DLL – 32位用户

V ↑
V86MMGR.VXD – V86MMGR虚拟设备
VCACHE.VXD – VCache虚拟设备
VCD.VXD – 虚拟COM驱动程序
VCOMM.VXD – VCOMM驱动程序
VCOND.VXD – Win32控制台
VDMAD.VXD – VDMAD虚拟设备
VER.DLL – 小型Win3.1安装程序16位版动态链接库
VER.NEW – 版本检测与文件安装库
VERSION.DLL – 32位版本动态链接库
VERX.DLL – 安装程序使用的版本动态库
VFAT.VXD – VFAT文件系统
VFD.VXD – 软盘虚拟设备
VFLATD.VXD – 虚拟平板帧缓存虚拟设备
VGA.DRV – VGA显示驱动程序
VIDCAP.INF – 即插即用VCD信息
VIDEOT.VXD – 视频虚拟设备
VIP.386 – TCP/IP虚拟IP设备
VJOYD.VXD – 游戏棒虚拟设备
VKD.VXD – 虚拟键盘设备
VLB32.DLL – Mail/Exchange组件
VMD.VXD – Win3.1虚拟鼠标驱动程序
VMM.VXD – 虚拟存储管理设备
VMM32.VXD – 虚拟存储管理设备
VMOUSE.VXD – 虚拟鼠标驱动程序
VNBT.386 – NetBIOS传输驱动程序
VNETBIOS.VXD – VNETBIOS虚拟设备
VNETSUP.VXD – 网络支持虚拟设备
VPD.VXD – 虚拟LPT驱动程序
VPICD.VXD – 虚拟可编程干扰控制器设备
VPOWERD.VXD – 高级电源管理虚拟设备
VREDIR.VXD – Microsoft网络32位客户端程序
VSAMI.DLL – AMI文件语法分析程序
VSASC8.DLL – ASCII文件语法分析程序
VSBMP.DLL – BMP文件语法分析程序
VSERVER.VXD – Microsoft网络32位服务器端程序
VSGIF.DLL – GIF文件语法分析程序
VSHARE.VXD – 32位共享虚拟设备驱动程序
VSMSW.DLL – Win写文件语法分析
VSPP.DLL – PowerPoint语法分析程序
VSRTF.DLL – RTF文件语法分析程序
VSTIFF.DLL – TIFF文件语法分析程序
VSW6.DLL – Word6文件语法分析程序
VSWORD.DLL – Word文件语法分析程序
VSWP5.DLL – WordPerfect5文件语法分析程序
VSXL5.DLL – Excel文件/图表语法分析程序
VTCP.386 – TCP/IP虚拟TCP驱动程序
VTDAPI.VXD – VTDAPI虚拟设备
VTDI.386 – 传输驱动接口支持程序
VXDLDR.VXD – 虚拟设备驱动程序装载器

W ↑
WAVE.INF – 即插即用音波设备信息
WDTOOOEX.MPD – SCSI驱动
WGPOADMN.DLL – Mail/Exchange组件
WHLP16T.DLL – 帮助动态链接库
WIN87EM.DLL – 80387数学仿真库
WINABC.HLP – 智能ABC帮助文件
WINBX.HLP – 表形码输入法帮助文件
WINCHA.HLP – 繁体仓颉输入法帮助文件
WINDOWS.CNT – Windows95帮助文件内容
WINDOWS.HLP – Windows95帮助文件
WINFILE.CNT – 文件管理器帮助文件内容
WINFILE.EXE – Windows工作组文件管理器
WINFILE.HLP – 文件管理器帮助文件
WINGB.HLP – 区位码输入法帮助文件
WINHLP23.HLP – Windows帮助文件
WINIME.HLP – *作指南帮助文件
WINNM.HLP – GBK内码输入法帮助文件
WININIT.EXE – Windows初始化文件
WINIPCFG.EXE – TCP/IP配置工具
WINNEWS.TXT – Winnews信息
WINPHO.HLP – 繁体注音输入法帮助文件
WINPOPUP.EXE – POPUP工具
WINREG.DLL – 远程注册支持
WINPY.HLP – 全拼输入法帮助文件
WINSOCK.DLL – Windows的套接API
WINSY.HLP – 双拼输入法帮助文件
WINXSP.HLP – GBK双拼输入法帮助文件
WINXZM.HLP – GBK郑码输入法帮助
WINZM.HLP – 郑码输入法帮助文件
WNASPI32.DLL – Windows DLL32位ASPI
WPSUNI.DRV – 传真驱动程序
WPSUNIRE.DLL – WPS主机资源执行程序

X ↑
XCOPY.EXE – DOS XCOPY工具
XCOPY32.EXE – 文件拷贝程序
XGA.DRV – XGA显示驱动程序

defaultlib “msvcrt.lib” conflicts with use of other libs

解决办法:

VC6.0版本:project->setting->link,在“工程选项”的最后添上:/NODEFAULTLIB:msvcrt.lib

其他版本:project->setting->link-> Category(input)-> Ignore   libraries里面添加上msvcrt.lib

 

解释:

1、msvcrt.lib   ——   MicroSoft Visual C RunTime(我是这么理解的)

详见百度百科:http://baike.baidu.com/view/665378.htm

2、这个警告:defaultlib “msvcrt.lib” conflicts with use of other libs

msvcrt.lib是个默认库,此库使用的其他库产生了冲突。

具体详见:http://www.cnblogs.com/bpbp/archive/2011/07/13/2104816.html

 

何为DLL Hell?

DLL噩梦

DLL HELL字面意思是DLL”灾难”,是由于com组件升级引起的程序不能运行的情况。

 COM对象常常被编译为dll文件。COM组件模型虽然很不错,但是它自身存在致命的缺陷。由于COM对象可以被重用,这样多个程序可能使用一个COM对象 ,如果这个COM组件升级了,就很有可能出现其中某个程序无法使用新组件,导致程序不能运行的情况,这种情况被称为“DLL HELL”。有时安装了新的软件后很多其他的软件都无法使用,往往就是这个原因。
Windows系统是以Dynamic Link Library(动态链接库)的方式让系统和应用软件共用所有的系统文件的。
DLL Hell的意思就是因为系统文件被覆盖而让整个系统像是掉进了地狱(什么软件都不能运行了)。

可能的原因

很多windows的应用程序在发布的时候会将它们所有要用到的DLL都一起打包发布,很多应用程序的安装程序都不是很成熟,经常在安装的时候将一个旧版本的DLL覆盖掉一个更新版本的DLL,从而导致其他的应用程序运行失败。有些安装程序比较友好,如果碰到需要覆盖新版的DLL时,它会弹出一个对话框提醒用户是否覆盖,但是即使这样,有些应用程序只能运行在旧版本的DLL下,如果不覆盖,那么它可能无法在新版的DLL中运行。总的来说,有三种可能的原因导致了DLL Hell的发生:

一是由使用旧版本的DLL替代原来一个新版本的DLL而引起的。这个原因最普遍,是Windows 9X用户通常遇到的DLL错误之一。

二是由新版DLL中的函数无意发生改变而引起。尽管在设计DLL时候应该向下兼容,然而要保证DLL完全向下兼容却是不能的。

三是由新版DLL的安装引入一个新的Bug。