如何在Windows中用C单独获取用户和系统环境variables

我希望能够分别查询用户和系统环境variables
就像它们在“ Environment Variables对话框中显示的一样。

通过使用GetEnvironmentVariable*getenv*函数,我只能得到合并两组variables后获得的值,用户定义的优先。
就像set命令在命令行上显示一样。

当用户定义的同名variables不存在时,这个function将有助于避免在系统定义的variables上悄无声息地回退。

即使是一个无证的API也可以。

如果您传递一个NULL标记句柄, ExpandEnvironmentStringsForUserCreateEnvironmentBlock )将只使用系统变量,但我不认为有一个函数只提供给用户变量,因此您必须从注册表中手动读取它们。

请记住,注册表中有两个用户变量键: Environment Volatile Environment 。 易失密钥甚至在某些版本的Windows上有子密钥。