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;