環境変数のエクスポートとインポート
以前、環境変数はまちがって上書きしてしまうと復元できないというリスクがあると気づいた。それへの対処。
対処
おそらくWindowsの「復元」を利用すれば可能になる。
でも、たかが環境変数を復元するだけで、システム全体を復元するのは影響範囲が広すぎる。 インストールしたアプリが削除されるなど、べつの問題が生じる可能性がある。
ファイルをもちいてエクスポートとインポートができたら嬉しい。
基礎知識
環境変数はレジストリだった
こちらを参考にさせていただいた。
レジストリはINIファイル形式だった
ragファイルをテキストエディタで開いてみると、INIファイル形式であるとわかる。
INIファイル形式
INIファイル形式は、セクション、キー、値の構成。ついでにコメントがある。
書式 | 説明 |
---|---|
; コメント | 先頭に; を付与した行はコメントになる |
[セクション名] | [] で囲ったらセクションになる。セクションは複数のキーバリューを含める |
キー名=値 | 環境変数のキーと値。 |
RapidEEのバックアップファイル
テキストエディタで開いてみると、レジストリのパスも判明した。
; User: Administrator
[HKEY_CURRENT_USER\Environment]
; System variables
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
セクション名が、そのままレジストリのパスになっている。
環境変数 | レジストリのパス |
---|---|
ユーザ環境変数 | HKEY_CURRENT_USER\Environment |
システム環境変数 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment |
レジストリ値の型
RapidEEのバックアップファイルを見てみると、以下のような記述がある。
"GTK_HOME"=hex(2):43,3A,5C,50,72,6F,67,72,61,6D,20,46,69,6C,65,73,5C,47,74,6B,2B,00
どうやらレジストリの値には型があるらしい。型に沿った記述方法がある。
http://www.atmarkit.co.jp/ait/articles/0901/16/news156.html
バイナリ値をテキストで書く。なんて面倒な…。
型 | 意味 | 書式 |
---|---|---|
REG_SZ | 文字列 | キー=値 |
REG_DWORD | 数値 | キー=dword:8桁16進数 |
REG_BINARY | バイナリ | キー=hex:2桁16進数,... |
REG_MULTI_SZ | 複数行文字列値 | キー=hex(7):2桁16進数,... |
REG_EXPAND_SZ | 展開可能な文字列値 | キー=hex(2):2桁16進数,... |
環境変数
環境変数は、レジストリにおいて以下のパス?セクション?で定義される。
; User: Administrator
[HKEY_CURRENT_USER\Environment]
; System variables
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
セクション名が、そのままレジストリのパスになっている。
所感
環境変数の実体はレジストリ。だからレジストリから環境変数を操作することも可能。バイナリデータ部分は難しいが。
予備知識だけで大変だな。 でも実体がregファイルだとわかったので、いくらでもエクスポートとインポートできそう。
次回は各ツールをつかって具体的な手順を確認する。