=c:=c:\ultil\bin
=d:=d:\program
如果我们调用Win32函数的时候,传递给它一个指定驱动器,并且该驱动器不是当前驱动器,系统就到进程的环境变量中查找与该驱动器相关的变量。如果变量存在,就是用变量的值作为当前目录。如果不存在,系统就假定指定驱动器的当前目录是根目录。
可以通过调用GetFullPathName来实现,原型如下:
DWORD GetFullPathName(
LPCTSTR lpFileName, // file name
DWORD nBufferLength, // size of path buffer,建议取值为:MAX_PATH
LPTSTR lpBuffer, // path buffer
LPTSTR *lpFilePart // address of file name in path
);
功能说明
从一指定文件得到文件的路径
参数说明
LPCTSTR lpFileName, 指定文件的名字
DWORD nBufferLength,缓存区的大小
LPTSTR lpBuffer, 用于存放路径的缓存区
LPTSTR *lpFilePart 文件名的起始地址
返回值
如果调用成功 返回实际路径的长度
如果缓冲区太小,不能装下文件完整路径的话 返回值就是缓冲区的值 所以我们一般都将缓存区大小设置得足够大
调用失败 返回0 用GetLastError获得错误信息
例如:要获取C盘的当前目录,可以如下操作:
TCHAR szPath[MAX_PATH];
::GetFullPathName(_T("x:"), MAX_PATH, szPath, NULL);
x为盘符,如果为当前进程所在的盘符,则szPath返回当前进程所在的目录,如果x为其他目录,又可分2种情况,如果环境变量中有该盘符的记录,则直接返回环境变量中的值,如果环境变量中没有,则直接返回以该盘符为根目录的路径x:\。另外一点,环境变量是按字母排序,因此,盘符变量一般排在前面。