获取进程的当前目录

系统记录中进程的当前驱动器和目录,但是并非为所有的驱动器记录当前目录。不过,操作系统通过环境变量对其有一些支持。
=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:\。另外一点,环境变量是按字母排序,因此,盘符变量一般排在前面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值