效果
源码
#include
#include
int main(int argc, PCHAR argv[]){
//当前路径
CHAR szCurrentDirectory[MAX_PATH];
//模块路径
CHAR szModulePath[MAX_PATH];
//Kernel32文件名
LPTSTR szKernel32 = TEXT("Kernel32.dll");
//Kernel32句柄
HMODULE hKernel32;
//当前路径长度,也用来判断是否成功
DWORD dwCurDirPathLen;
//获取进程当前目录
dwCurDirPathLen = GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
if (dwCurDirPathLen == 0){
printf("获取进程当前目录错误: %d\n", GetLastError());
return 1;
}
printf("当前进程的目录为: %s\n", szCurrentDirectory);
//将进程当前目录设置为 "C:\" ,这样如果用相对路径创建目录则会创建到C盘去
lstrcpy(szCurrentDirectory, TEXT("C:\\"));
if (!SetCurrentDirectory(szCurrentDirectory)){
printf("设置当前目录错误: %d\n", GetLastError());
return 2;
}
printf("已设置当前目录为 %s\n", szCurrentDirectory);
//在当前目录下创建 "子目录" 目录
CreateDirectory(TEXT("子目录"), NULL);
//再次获取进程当前目录
dwCurDirPathLen = GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
if (dwCurDirPathLen == 0){
printf("获取进程当前目录错误: %d\n", GetLastError());
return 3;
}
printf("GetCurrentDirectory获取当前进程的目录为: %s\n", szCurrentDirectory);
//使用NULL参数获取本模块路径
if (!GetModuleFileName(NULL, szModulePath, MAX_PATH)){
printf("获取模块路径错误: %d\n", GetLastError());
return 4;
}
printf("本模块路径为: %s\n", szModulePath);
//获取Kernel32.dll的模块句柄
hKernel32 = LoadLibrary(szKernel32);
//使用Kernel32.dll模块句柄获取其路径
if (!GetModuleFileName(hKernel32, szModulePath, MAX_PATH)){
printf("获取模块路径错误: %d\n", GetLastError());
return 5;
}
printf("Kernel32.dll模块路径为: %s\n", szModulePath);
getchar();
return 0;
}