用 GetEnvironmentVariable 获取常用系统变量

 以前曾用 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; 
 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Handll/archive/2009/11/04/1596247.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值