用 GetEnvironmentVariable 获取常用系统变量
2009-11-04 22:03
375 查看
以前曾用 GetWindowsDirectory、GetSystemDirectory、GetTempPath 等函数获取系统常用文件夹;
也用过 SHGetSpecialFolderLocation、SHGetPathFromIDList 函数获取过更多常用路径;
但这都不如用 GetEnvironmentVariable 获取系统变量来得快.
//譬如 WINDIR 是表示系统目录的系统变量, 可以这样获取:
var
s: string;
begin
s := GetEnvironmentVariable('WINDIR');
ShowMessage(s); {C:\WINDOWS}
end;
(*--------------------------------------------------------------------------------
WINDIR {系统目录 - C:\WINDOWS}
SYSTEMROOT {系统目录 - C:\WINDOWS}
SYSTEMDRIVE {系统根目录 - C:}
HOMEDRIVE {当前用户根目录 - C:}
USERPROFILE {当前用户目录 - C:\Documents and Settings\wy}
HOMEPATH {当前用户路径 - \Documents and Settings\wy}
TMP {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
TEMP {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
APPDATA {当前用户数据文件夹 - C:\Documents and Settings\wy\Application Data}
PROGRAMFILES {程序默认安装目录 - C:\Program Files}
COMMONPROGRAMFILES {文件通用目录 - C:\Program Files\Common Files}
USERNAME {当前用户名 - wy}
ALLUSERSPROFILE {所有用户文件目录 - C:\Documents and Settings\All Users}
OS {操作系统名 - Windows_NT}
COMPUTERNAME {计算机名 - IBM-B63851E95C9}
NUMBER_OF_PROCESSORS {处理器个数 - 1}
PROCESSOR_ARCHITECTURE {处理器芯片架构 - x86}
PROCESSOR_LEVEL {处理器型号 - 6}
PROCESSOR_REVISION {处理器修订号 - 0905}
USERDOMAIN {包含用户帐号的域 - IBM-B63851E95C9}
COMSPEC {C:\WINDOWS\system32\cmd.exe}
PATHEXT {执行文件类型 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pyo;.pyc;.py;.pyw}
Path {搜索路径} s: string;
--------------------------------------------------------------------------------*)
另外, 可以利用 .. 到上层目录, 如:
begin
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy\My Documents\RAD Studio\Projects}
SetCurrentDir('..');
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy\My Documents\RAD Studio}
SetCurrentDir('..\..');
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy}
end;
外一篇:
Windows 提供了API函数SetEnvironmentVariable,不过这个函数只能修改当前进程的环境变量,而不能修改其他进程和系统的变量。
要修改系统的环境变量,需要修改注册表SYSTEM\CurrentControlSet\Control\Session Manager\Environment下的项,然后发送WM_SETTINGCHANGE消息。
添加Registry单元
procedure SetSystemEnvironmentVariable(const name, value: string);
var
rv: DWORD;
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('SYSTEM\CurrentControlSet\Control\Session ' +
'Manager\Environment', False);
WriteString(name, value);
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LParam
(PChar('Environment')), SMTO_ABORTIFHUNG, 5000, rv);
finally
Free
end
end;
也用过 SHGetSpecialFolderLocation、SHGetPathFromIDList 函数获取过更多常用路径;
但这都不如用 GetEnvironmentVariable 获取系统变量来得快.
//譬如 WINDIR 是表示系统目录的系统变量, 可以这样获取:
var
s: string;
begin
s := GetEnvironmentVariable('WINDIR');
ShowMessage(s); {C:\WINDOWS}
end;
(*--------------------------------------------------------------------------------
WINDIR {系统目录 - C:\WINDOWS}
SYSTEMROOT {系统目录 - C:\WINDOWS}
SYSTEMDRIVE {系统根目录 - C:}
HOMEDRIVE {当前用户根目录 - C:}
USERPROFILE {当前用户目录 - C:\Documents and Settings\wy}
HOMEPATH {当前用户路径 - \Documents and Settings\wy}
TMP {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
TEMP {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
APPDATA {当前用户数据文件夹 - C:\Documents and Settings\wy\Application Data}
PROGRAMFILES {程序默认安装目录 - C:\Program Files}
COMMONPROGRAMFILES {文件通用目录 - C:\Program Files\Common Files}
USERNAME {当前用户名 - wy}
ALLUSERSPROFILE {所有用户文件目录 - C:\Documents and Settings\All Users}
OS {操作系统名 - Windows_NT}
COMPUTERNAME {计算机名 - IBM-B63851E95C9}
NUMBER_OF_PROCESSORS {处理器个数 - 1}
PROCESSOR_ARCHITECTURE {处理器芯片架构 - x86}
PROCESSOR_LEVEL {处理器型号 - 6}
PROCESSOR_REVISION {处理器修订号 - 0905}
USERDOMAIN {包含用户帐号的域 - IBM-B63851E95C9}
COMSPEC {C:\WINDOWS\system32\cmd.exe}
PATHEXT {执行文件类型 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pyo;.pyc;.py;.pyw}
Path {搜索路径} s: string;
--------------------------------------------------------------------------------*)
另外, 可以利用 .. 到上层目录, 如:
begin
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy\My Documents\RAD Studio\Projects}
SetCurrentDir('..');
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy\My Documents\RAD Studio}
SetCurrentDir('..\..');
s := GetCurrentDir;
ShowMessage(s); {C:\Documents and Settings\wy}
end;
外一篇:
Windows 提供了API函数SetEnvironmentVariable,不过这个函数只能修改当前进程的环境变量,而不能修改其他进程和系统的变量。
要修改系统的环境变量,需要修改注册表SYSTEM\CurrentControlSet\Control\Session Manager\Environment下的项,然后发送WM_SETTINGCHANGE消息。
添加Registry单元
procedure SetSystemEnvironmentVariable(const name, value: string);
var
rv: DWORD;
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('SYSTEM\CurrentControlSet\Control\Session ' +
'Manager\Environment', False);
WriteString(name, value);
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LParam
(PChar('Environment')), SMTO_ABORTIFHUNG, 5000, rv);
finally
Free
end
end;
相关文章推荐
- 用 GetEnvironmentVariable 获取常用系统环境变量
- GetEnvironmentVariable 获取常用系统变量
- Delphi 中用 GetEnvironmentVariable 获取常用系统变量
- 用 GetEnvironmentVariable 获取常用系统环境变量
- 用 GetEnvironmentVariable 获取常用系统环境变量
- GetEnvironmentVariable 获取常用系统变量(转)
- 用 GetEnvironmentVariable 获取常用系统环境变量
- 用 GetEnvironmentVariable 获取常用系统环境变量
- 用 GetEnvironmentVariable 获取常用系统变量
- delphi 用 GetEnvironmentVariable 获取常用系统环境变量
- GetEnvironmentVariable获取系统变量
- GetEnvironmentVariable 获取系统环境变量
- GetEnvironmentVariable 获取系统环境变量
- 用 GetEnvironmentVariable 获取常用系统变量
- Java获取系统环境变量(System Environment Variable)和系统属性(System Properties)以及启动参数的方法
- 用 GetEnvironmentVariable 获取常用系统变量
- Environment.GetEnvironmentVariable()方法获取环境变量
- Delphi利用系统环境变量获取常用系统目录
- 用 GetEnvironmentVariable 获取系统变量
- 修改环境变量(GetEnvironmentVariable、SetEnvironmentVariable、GetEnvironmentStrings)