Windows常用环境变量及代码获取环境变量

1. 起因

开发PC端程序的时候,会经常使用到Windows的环境变量,因为太多了所以也记不住,用的时候老是百度,现在想做下总结方便查找。

2. 实验环境

尽量测试每个环境变的结果,测试环境为Win10。
有些环境变量在不同系统的表现不一样请根据实际情况选用。
实验采用的是在命令行使用 "echo %变量名%"的形式查看输出结果。

3. 实体部分

当前系统盘符: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”

4. 代码中使用

4.1 C代码中

// 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;
}

4.2 Windows API

// 第一个参数表示环境变量名称
// 第二个参数表示接收环境变量值的缓存区(最多32767,包含终止符)
// 缓存大小包含终止字符
// 成功返回实际环境变量值的字符串长度,不包含终止字符
// 如果缓冲区大小不够,则返回需要的缓冲区大小且lpBuffer不会被存储值
// 返回0表示失败,如果找不到环境变量,使用GetLastError时返回 RROR_ENVVAR_NOT_FOUND
DWORD GetEnvironmentVariable(
  LPCTSTR lpName,
  LPTSTR  lpBuffer,
  DWORD   nSize
);

4.3 C#代码中

// 从当前进程中检索环境变量的值
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ㄒ)/~~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值