C:\Users\ユーザ名を別ドライブに出来ないのか?

2015-11-14 と関連する話。


結論:無理・゚・(ノД`)・゚・


んでは、以下、足掻いた結果です。



使用中のユーザで試すのは怖いので、新規ユーザ TESTを作成して、ログインしてすぐにログアウト。

その1:HOMEDRIVE を上書き

TESTでログイン後、PowerShellで、

> dir env:

とすると、環境変数がわらわらと出てくるわけだけど、
そこに、HOMEDRIVE と HOMEPATH が、あります。

HOMEDRIVE                      C:
HOMEPATH                       \Users\TEST

なので、「$HOMEDRIVE を別のドライブに変更したらええやん。」と考えた。
ただ、システムの環境変数を変更するのは影響度がデカすぎるので、ユーザ環境変数で定義。

ついでに、C:\Users\TEST へ向いている環境変数をすべて、別ドライブに置き換え。

APPDATA                        I:\Users\%USERNAME%\AppData\Roaming
HOMEDRIVE                      I:
HOMEPATH                       \Users\%USERNAME%
LOCALAPPDATA                   I:\Users\%USERNAME%\AppData\Local
USERPROFILE                    I:\Users\%USERNAME%

再度、TESTでログインして、PowerShell環境変数をチェックしたが、
上記で設定したユーザ環境変数は反映されていなかった。


失敗 orz

その2:$HOMEDRIVE$HOMEPATH をmklinkで別のドライブにしてしまう

事前に、下記を実行して、Administratorログイン出来るようにする。

net user administrator password /active:yes

以後は、Administratorでログインして操作。


ユーザフォルダ(C:\Users\TEST)を 別ドライブにユーザフォルダごと (I:\home\TEST)をコピー。

下記の様にして、シンボリックリンクを作成

mklink /d "C:\Users\TEST" "I:\home\TEST"

んで、TESTでログインしてみた。

しかし、ログイン時にプロファイルが正しく読めないとか警告がでて、TEMPってフォルダを C*\Users の下に作成して起動していた。。。

失敗 orz

おわりに

たぶんだけど、その1での変更をシステム環境変数で設定すれば行けるかもしれない。たぶん。きっと。おそらく。
ただ、失敗すると影響大過ぎるので恐ろしくて出来ない。

仮想PCで試しにやっても良いかもしれないが、これ以上はしんどいのでやめ。

追記

下記を見て驚愕。

agpg.seesaa.net

引用

最終的なProcess環境変数VARの値は"system->user->volatile"となる。

APPDATA、HOMEDRIVE、HOMEPATH、LOCALAPPDATA、USERNAME、USERPROFILE は、
HKEY_CURRENT_USER\Volatile Environment に定義されていたので、おそらく volatile 。

ってことは、後からバンバン変えられるから、System or User環境変数に設定したとしても
後続のプロセス(きっとOSのシステム系のexe)で上書きされるから、定義しても無駄な臭いしかしない。。。

だから、User環境変数で設定してもだめっだったのか。。。

しっかり諦めがついた。
仮想PCで開発環境作るしかないね。

Linux(CentOSとかUbuntu)がデフォルトで入っていて、Surface Pro4 と同程度のスペックのノートブックが欲しい人生だった。。。