开发PC端程序的时候,会经常使用到Windows的环境变量,因为太多了所以也记不住,用的时候老是百度,现在想做下总结方便查找。
尽量测试每个环境变的结果,测试环境为Win10。
有些环境变量在不同系统的表现不一样请根据实际情况选用。
实验采用的是在命令行使用 "echo %变量名%"的形式查看输出结果。
当前系统盘符:SYSTEMDRIVE 和 HOMEDRIVE ➔ “C:”
当前系统目录:SYSTEMROOT 和 WINDIR ➔ “C:\Windows”
当前用户配置文件目录:
USERPROFILE ➔ “C:\Users\HP”
HOMEPATH ➔ “\Users\HP”
所用用户配置文件目录:ALLUSERSPROFILE ➔ “C:\ProgramData”
当前用户Temp缓存:
TEMP ➔ “C:\Users\HP\AppData\Local\Temp”
TMP ➔ “C:\Users\HP\AppData\Local\Temp”
系统Temp缓存:%SYSTEMROOT%\TEMP ➔ “C:\Windows\temp”
程序文件夹:PROGRAMFILES ➔ “C:\Program Files”
程序文件夹(X86):PROGRAMFILES(X86) ➔ “C:\Program Files (x86)”
包含用户账户的域的名称:USERDOMAIN ➔ “DESKTOP-LLRTORK”
当前登录的用户名称:USERNAME ➔ “HP”
用户桌面:%USERPROFILE%\Desktop ➔ C:\Users\HP\Desktop
默认应用程序存储位置:APPDATA ➔ “C:\Users\HP\AppData\Roaming”
当前目录:CD ➔ “C:\Users\HP”
用来启动当前的 Cmd.exe 的正确命令行:CMDCMDLINE ➔ “C:\Windows\system32\cmd.exe”
这个还没有领悟到精髓,大佬知道的话留个言,3Q!
当前命令处理程序扩展的版本:CMDEXTVERSION ➔ “2”
计算机名称:COMPUTERNAME ➔ “DESKTOP-LLRTORK”
命令行可执行程序的准确路径:COMSPEC ➔ “C:\Windows\system32\cmd.exe”
当前日期:DATE ➔ “2021/06/30 周三”
当前时间:TIME ➔ “23:38:19.10”
上一条命令的错误代码:ERRORLEVEL ➔ “9009”
当前登录会话的域控制器的名称:LOGONSERVER ➔ “\DESKTOP-LLRTORK”
计算机处理器数目:NUMBER_OF_PROCESSORS ➔ “12”
操作系统名称:OS ➔ “Windows_NT”
操作系统认为可执行的文件扩展名列表:PATHEXT ➔ “.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC”
处理器体系结构:PROCESSOR_ARCHITECTURE ➔ “AMD64”
处理器型号:PROCESSOR_LEVEL ➔ “23”
处理器版本:PROCESSOR_REVISION ➔ “6001”
处理器标识:PROCESSOR_IDENTIFIER ➔ “AMD64 Family 23 Model 96 Stepping 1, AuthenticAMD”
当前解释程序的命令提示符设置:PROMPT ➔ " $P $G"
随机数(0-32767):RANDOM ➔ “25197”
程序共通文件目录:COMMONPROGRAMFILES ➔ “C:\Program Files\Common Files”
程序共通文件目录(X86):COMMONPROGRAMFILES(X86) ➔ “C:\Program Files (x86)\Common Files”
驱动数据目录:DRIVERDATA ➔ “C:\Windows\System32\Drivers\DriverData”
本地数据目录:LOCALAPPDATA ➔ “C:\Users\HP\AppData\Local”
PowerShell模块路径:PSModulePath ➔ “C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules”
公用目录:PUBLIC ➔ “C:\Users\Public”
// 1. 使用api
// 参数为环境变量名称
// 返回值为环境变量对应的值
char *getenv(const char *name);
// 2. 使用main函数
int main(int argc, char **argv, char** envp)
{
for (envp; *env != NULL; envp++)
{
...
}
}
// 3. 使用extern char **environ
extern char **environ;
int main(int argc, char *argv[])
{
while (*environ != NULL)
{
environ++;
}
return 0;
}
// 第一个参数表示环境变量名称
// 第二个参数表示接收环境变量值的缓存区(最多32767,包含终止符)
// 缓存大小包含终止字符
// 成功返回实际环境变量值的字符串长度,不包含终止字符
// 如果缓冲区大小不够,则返回需要的缓冲区大小且lpBuffer不会被存储值
// 返回0表示失败,如果找不到环境变量,使用GetLastError时返回 RROR_ENVVAR_NOT_FOUND
DWORD GetEnvironmentVariable(
LPCTSTR lpName,
LPTSTR lpBuffer,
DWORD nSize
);
// 从当前进程中检索环境变量的值
public static string? GetEnvironmentVariable (string variable);
// 从当前进程或从当前用户或本地计算机的Windows操作系统注册表中检索环境变量的值
public static string? GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
// 其中EnvironmentVariableTarget 的值有如下
// 1. Machine: 环境变量从Windows 操作系统注册表中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 项存储或检索
// 2. Process: 环境变量从与当前进程关联的环境块中存储或检索
// 3. User: 环境变量从 Windows 操作系统注册表中的 HKEY_CURRENT_USER\Environment 项存储或检索
关注「CoderPro」公众号,专注于分享.NET/C++知识及算法的大本营,新手公众号请大家多多关照/(ㄒoㄒ)/~~