SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

吉云

大家今天想跟大家唠唠我捣鼓这玩意儿的经历。也不是什么高深的东西,就是前段时间做个小工具,遇到点实际问题,才去琢磨它的。

起因是这样的,我那个小程序需要知道自己跑在哪个系统上,比如是Windows还是别的版本号多少。还有,我想让程序能读取一些我提前在系统里设置好的配置信息,就是那种环境变量,省得硬编码写死在代码里,改起来麻烦。

开始摸索

SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

我也不太清楚具体咋弄。就想着肯定有现成的方法能拿到这些系统信息。我就去翻翻资料,试着搜搜“获取操作系统信息”、“读取环境变量”之类的关键词。很快就注意到这个叫Environment的类(或者类似名字的东西,不同语言可能叫法有点差异,但功能大同小异)。

看着名字就觉得靠谱,"Environment",环境嘛应该就是管这些的。

动手试试

我先试着获取最简单的东西,比如当前程序运行的目录。这玩意儿挺常用的,比如你要读写程序旁边的文件就得知道路径。我找到一个像是CurrentDirectory之类的属性或者方法,试一下,真能拿到当前工作目录的完整路径,挺方便。

我又尝试获取操作系统信息。也有对应的属性,像是能拿到操作系统的平台标识(比如是Windows NT还是Unix)、版本号之类的。这些信息对我那个小工具判断运行环境很有用。

读取环境变量

SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

然后就是重头戏——读取环境变量。我需要在系统里设置一个变量,比如叫MY_APP_CONFIG_PATH,然后让我的程序去读这个变量,找到配置文件的位置。

我发现Environment类里头有个类似GetEnvironmentVariable的方法。用法也简单,就是把你想读取的环境变量的名字传进去就行。

比如,我想读PATH变量,就调用GetEnvironmentVariable("PATH")。试下,果然能拿到那一长串的路径。

然后我就试着读取我自己定义的MY_APP_CONFIG_PATH。一开始没成功,后来才反应过来,环境变量还分用户变量系统变量

  • 用户变量:只对当前登录的用户有效。
  • SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

  • 系统变量:对这台电脑上的所有用户都有效。

我当时是在系统变量里设置的,但可能读取的时候默认是先找用户变量?或者是我代码写错?反正折腾一下,确保用对方法,最终是成功读到我设置的路径。

其他发现

在捣鼓的过程中,我还发现能干不少其他事儿:

    SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

  • 获取机器名:用类似MachineName的属性能拿到计算机名。
  • 获取用户名:用类似UserName的属性能拿到当前登录的用户名。
  • 获取命令行参数:有时候运行程序会带一些参数,用类似CommandLine或者GetCommandLineArgs的方法也能拿到。
  • 获取特殊文件夹路径:比如“我的文档”、“桌面”、“应用程序数据”这些文件夹,它们在不同系统、不同用户下的路径可能不一样。Environment提供一些方法(比如GetFolderPath配合一些枚举值)可以直接获取这些特殊文件夹的准确路径,避免路径拼接的麻烦和错误。

最终实践

SYSTEM.ENVIRONMENT有啥用处?快速了解它的几个关键功能!

在我那个小工具里,我就用GetEnvironmentVariable来读取我设置的MY_APP_CONFIG_PATH。这样一来,配置文件放在哪里就很灵活,只需要在使用前设置好环境变量就行,程序代码不用改动。我还用获取操作系统版本的功能,针对不同系统做一些兼容处理。

这东西虽然看起来简单,但在需要和操作系统环境打交道的时候,确实是个挺实用、挺方便的工具集。它能帮你拿到很多有用的系统信息和配置,让你的程序更灵活、更健壮。这回折腾下来,感觉收获还是挺大的,以后再遇到类似需求就知道怎么快速搞定。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]