GetTempPath函数
功能 获取为临时文件指定的路径
API中函数原形为: DWORD GetTempPath(DWORD nBufferLength, LPTSTR lpBuffer)
参数:
StrLen = GetTempPath(NAME_LEN, OutPath)
其中:
OutPath:是输出临时文件夹名称的变量,它的初始值为NAME_LEN个空格,函数调用后,就不是空格了,它会把取得的临时文件夹名称存入此变量。
NAME_LEN:是告诉函数OutPath变量的长度。
StrLen:是取得的临时文件夹名称的长度。
返回值 Long,装载到lpBuffer的字符数。如当前缓冲区的长度不够,不能容下整个路径,则返回lpBuffer需要的长度。
零表示失败。会设置GetLastError
应用小例:
CHAR OutPath[MAX_PATH];
int StrLen = GetTempPath(MAX_PATH, OutPath);
printf("输出临时文件夹名称 = %s\n",OutPath);
printf("临时文件夹名称的长度= 0x%x\n",StrLen);
//输出临时文件夹名称 = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ (环境变量里有)
//临时文件夹名称的长度= 0x23
注解临时路径是由TMP环境变量指定的一个路径。如TMP不存在,则是由TEMP环境变量指定的路径。
如果这两个环境变量都不存在,就是当前目录
如果查看当前用户的临时文件夹,可以在开始-运行里面输入%temp%,回车即可(一般为隐藏的)
GetTempFileName函数
这个函数包含了一个临时文件的名字,它可由应用程序使用
UINT GetTempFileName(
PChar lpPathName:; {路径}
PChar lpPrefixString:; {前缀}
UINT uUnique:; {指定生成文件名的数字,文件名将根据参数2、参数3来生成}
PChar lpTempFileName: {文件名需要的缓冲区}
) {指定生成文件名的数字,如果参数3是0,则返回文件名长度}
应用举例:
CHAR OutPath[MAX_PATH];
int StrLen = GetTempPath(MAX_PATH, OutPath);
CHAR Name[100];
GetTempFileNameA(OutPath,"~xx",16,Name);
printf("自定义唯一临时文件夹名称 = %s\n",Name);
//因为16的十六进制是10,文件名会是: ~xx10.tmp
//Name = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~xx10.tmp
GetWindowsDirectory函数与GetSystemDirectory函数用法一样
GetWindowsDirectory是获取Windows文件夹的路径。GetSystemDirectory是获取systrm32文件夹的路径
下面是讲解GetSystemDirectory函数
GetSystemDirectory 函数
获取systrm32文件夹的路径。系统文件夹包含了诸如动态链接库和驱动的系统文件。
该函数最初是为了兼容问题而提供的。应用程序应该在Program File文件夹内存储代码和常驻数据。
UINT WINAPI GetSystemDirectory(
__out LPTSTR lpBuffer,
__in UINT uSize
);
参数
lpBuffer String,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成“路径”字符串的长度+1。
通常至少要为这个缓冲区分配MAX_PATH个字符的长度
nSize Long,lpBuffer字串的最大长度
返回值
如果函数成功,返回值是缓冲内容副本的长度,但该长度不包含结尾的NULL字符。如果该长度大于给定的长度,则返回值是所需的缓冲大小,且包含结尾的NULL字符。
如果函数失败,返回零值。
备注
应用程序不应该在系统目录内创建文件。如果用户运行在一个共享版本的Windows操作系统上,应用程序是不能访问系统目录的
应用小例:
string str;
UINT size=GetSystemDirectory(NULL,0);
CHAR *path=new CHAR[size];
if (GetSystemDirectory(path,size) != 0)
{
str = path;
}
delete[] path;