获取当前进程目录 GetCurrentDirectory() 及 获取当前运行模块路径名GetModuleFileName()
GetCurrentDirectory 获得的是当前进程的活动目录(资源管理器决定的),可以用SetCurrentDirectory 修改的。
转自 http://m.blog.csdn.net/blog/scuthanman/10094793
GetModuleFileName函数可以获取当前执行模块所在位置的绝对路径名,无论是哪里的进程对模块进行调用。
而GetCurrentDirectory获取的是当前进程所在的当前目录,跟执行模块所在的位置并没有关系,返回的是主进程所在目录。
GetCurrentDirectory函数原型
DWORD GetCurrentDirectory(
DWORD nBufferLength,
LPTSTR lpBuffer
);
Parameters
nBufferLength: 接收保存路径的字符串缓存长度, 缓存必须有一个保存结束的空字符的位置.
lpBuffer:指向接收字符串的缓存,收到的非空字符串指定了当前目录的绝对路径.
The GetCurrentDirectory function retrieves the current directory for the current process.
TCHAR path[MAX_PATH] = {};
GetCurrentDirectory(MAX_PATH, path);
GetCurrentDirectory返回当前进程的当前目录,并不一定返回你的exe应用程序的目录。如果你在应用程序中调用了打开文件对话框,你选择了一个文件,那么,这个文件所在的目录就成了当前进程的当前目录了。

#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR path[MAX_PATH] = {};
GetCurrentDirectory(MAX_PATH, path);
wprintf(L"%s\n", path); TCHAR pathm[MAX_PATH];
GetModuleFileName(NULL, pathm, MAX_PATH);
wprintf(L"%s\n", pathm);
system("pause"); return ;
}

2、
DWORD GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
函数参数说明:
hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。
lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数
nSize DWORD ,装载到缓冲区lpFileName的最大值
函数返回值:
如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所为的nSize过小,哪么返回仅按所设置缓冲区大小返回相应字符串内容。
如果函数失败,返回值将为0,并返回GetLastError异常代码。
需要的头文件为:
include Windows.h
下面的例子是错的,因为不确定前进程目录是固定的
if (_access("uny.ini", ) == )
{
//首先检查当前路径是否存在配置文件
strcpy(&sCfgFile[], DEFAULT_CFG_FILE);
}
else
{
GetSystemDirectoryA(sCfgFile, sizeof(sCfgFile) - );
strcat(&sCfgFile[], "\\");
strcat(&sCfgFile[], DEFAULT_CFG_FILE);
}
应该用
TCHAR module_path[MAX_PATH] = { };
DWORD dw_ret = GetModuleFileName(NULL, module_path, MAX_PATH);
_tstring dll_path = module_path;
if ( != dw_ret)
{
size_t pos = dll_path.find_last_of('\\');
if (- != pos)
{
dll_path = dll_path.substr(, pos + );
}
}
获取exe所在的目录,不会根据进程目录的改变而改变。
要知道进程的目录是可以用 SetCurrentDirectory 修改的。
获取当前进程目录 GetCurrentDirectory() 及 获取当前运行模块路径名GetModuleFileName()的更多相关文章
- WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息
开发一个WPF桌面应用程序.刚接触WPF编程以及C#语言,这里把一些关键的问题记录下来. 下面是实现将路径的文件夹信息绑定到TreeView及DataGrid上显示. 关键问题是C#数据绑定方式及IE ...
- Asp.Net 无法获取IIS拾取目录的解决办法[译]
Asp.Net 无法获取IIS拾取目录的解决办法 作者:Jason Doucette [MCP] 翻译:彭远志 原文地址:Fixing the cannot get IIS pickup direc ...
- windows下使用C#获取特定进程网络流量
最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名 ...
- FTPClient使用中的问题--获取当前工作目录为null
使用org.apache.commons.net.ftp.FTPClient 来做ftp的上传下载功能 FTPClient ftp = new FTPClient();ftp.connect(doc. ...
- ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)
[原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...
- iOS 获取文件的目录路径的几种方法 [转]
iOS 获取文件的目录路径的几种方法 2 years ago davidzhang iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. d ...
- 获取其他进程中ListBox和ComboBox的内容
(*// 标题:获取其他进程中ListBox和ComboBox的内容 说明:Window2000+Delphi6调试通过 设计:Zswang 支持:wjhu111@21cn.com 日期:2004-0 ...
- VB VS2003获取当前进程用户登录
Page.User.Identity.Name获取当前进程用户名称,VS03才可以用
- iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)
文件目录路径获取(Home目录,文档目录,缓存目录等) iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录: 1,Home ...
随机推荐
- Linux——软件包简单学习笔记
Linux中的是那种软件包: (这里学习是基于redHat的Cent-OS) 1: 二进制软件包管理(RPM.YUM) 2:源代码包安装 3: 脚本安装(Shell或Java脚本) 一: 二进制软件 ...
- c++ 判断两个容器是否相等(equal)
#include <iostream> // cout #include <algorithm> // equal #include <vector> // vec ...
- Spring 注解 @Resource和@Autowired
@Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spr ...
- EsayUI + MVC + ADO.NET(仓储基础接口)
1.RepositoryFramework(仓储接口:无外乎就是CRUD) 1.IAddRepository(添加接口) using System; namespace Notify.Infras ...
- MongoDB(课时18 修改器)
3.4.3.2 修改器(原子操作) 对MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(包含数组),所以在MongoDB在设计的时候就提供有一系列的修改器的应用,那么像之前使用的“$ ...
- Android蓝牙通信功能开发
1. 概述 Bluetooth 是几乎现在每部手机标准配备的功能,多用于耳机 mic 等设备与手机的连接,除此之外,还可以多部手机之间建立 bluetooth 通信,本文就通过 SDK 中带的一个聊天 ...
- Java-Java程序设计的基本概念
2017-10-06 15:31:39 一.Java程序的基本构成 二.数据类型与标识符 数据类型 标识符 广义的用于定义各种对象名称的字符串集合称为标识符,标识符一般分为用户 ...
- win10 自己DIY的arp绑定小脚本
@echo off&mode con cols=80 lines=22&title ARP_bind Tools setlocal enabledelayedexpansion rem ...
- English trip -- VC(情景课)5 Around Town
Around Town 城市周围 Talk about the picture 看图说话 sentences Where are you? I'm in the Meten classroom. ...
- Turbolinks
Turbolinks Turbolinks® makes navigating your web application faster. 功能: 自动优化导航. 无需server端配合.全HTML网页 ...