コマンド ライン (cmd.exe) を使用して、特定のユーザー プロファイルの環境変数を作成しようとしています。コマンドは知ってsetx
いますが、ユーザーの変数を作成できません。したがって、私の目標は、マップされたネットワーク ドライブ文字「M:」を対象としたユーザー固有の環境変数を作成することです。ともかく?
1 に答える
setx
他のユーザーの環境変数を作成することはできません(ただし、ユーザー スコープの変数を作成することはできます) WM_SETTINGSCHANGE
。環境が変更されたことを実行中のプロセスに通知するメッセージを送信します。
ユーザー スコープの環境変数は単なるレジストリ値であり、 に保存されHKEY_CURRENT_USER\Environment
ます。そのキーの下にある値/データのペアを変更することで、特定のプロファイル用に作成できます。WM_SETTINGSCHANGE
ただし、レジストリを変更しても は送信されませんsetx
。
ユーザー プロファイルが存在します
レジストリ ハイブをロードすることにより、特定のユーザー (プロファイルが既に存在するユーザー) の変数を作成できます。
reg load HKU\ForeignUser C:\Users\<userid>\NTUSER.DAT
(ユーザーがログオンできないか、Windows の起動後にログオンしていた場合、ユーザーはNTUSER.DAT
ロックされます。)
次に、そのキー ( ) に関連するレジストリ変更コマンドを実行してHKEY_CURRENT_USER\ForeignUser
、環境変数を作成/変更できます。
reg add HKU\ForeignUser\Environment /v ENVVAR_NAME /t REG_SZ /d envvar_value
デフォルトのユーザー プロファイル
ユーザーがマシンにログオンしたことがない場合、既定のユーザー プロファイルを変更すると、すべての新しいユーザー プロファイルの環境を事前に作成できます。
デフォルトのユーザー プロファイル ( HKEY_USERS\.Default\Environment
) を変更して、環境変数を構成できます。
reg add HKEY_USERS\.Default\Environment /v ENVVAR_NAME /t REG_EXPAND_SZ /d envvar_value
%USERNAME%
またはその他の環境変数を _envvar_value_ に含めると、すべてのユーザーに対して機能させることができます。ただし、これにより、マシンに初めてログインする後続のすべてのユーザーの envvar が作成されます。変数を 1 人のユーザー用に作成するだけの場合、これはおそらく最善の解決策ではありません。
グローバル スクリプト
または、またはレジストリ変更コマンドを使用して、envvar を作成するログイン スクリプト ( HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
; descriptionの下に値を作成することによって呼び出される) を作成することもできます。setx
特定のユーザーに対してのみ機能させたい場合は、次のようにスクリプト内のユーザー名を確認する必要があります。
IF "%USERNAME%"=="TARGET_USER" SETX ENVVAR_NAME "envvar_value"