c# - 如何调用 Environment.GetEnvironmentVariable 而不会丢失 %PathVariableName% 例如 %SystemRoot%
问题描述
感谢像this和this 这样的帖子,我能够获取 PATH 环境变量并随意修改它。
但是,一旦我调用System.Environment.GetEnvironmentVariable(name, scope)
,返回的字符串就不再具有 PATH 变量%PathVariableName%
(例如%SystemDrive%
)。
而不是预期的%SystemDrive%\folder
,我得到了C:\folder
。
虽然它按预期运行,但如果可以,我更愿意保留变量。
当我调用 GetEnvironmentVariable 时,有什么方法可以保留这些路径变量名?
解决方案
感谢@RetiredNinja,在Nathan Bedford 的回答中找到了答案。
基本上路径在注册表中可用,因此从那里检索字符串将允许我保留路径变量。
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
推荐阅读
- android - 在 kotlin 中克隆一个对象
- c# - 为什么有两个目录分隔符?
- sql-server - SQL Server 计算日期之间的小时数,不包括周五下午 6 点至周一早上 6 点
- ios - WKWebView ImagePicker 捕捉iOS选择图片事件
- python - 在 .txt 文件中找到不正确的行并将其删除
- python-3.x - Python boto Amazon RDS 错误:KMSKeyNotAccessibleFault
- react-native - 在本机反应中将组件右对齐
- mysql - 无法执行 GROUP_CONCAT
- java - gRPC Java - 存储状态变量(用于用户身份验证)
- ios - UICollectionView 在弹回后刷新时消失