1

コマンド ライン (cmd.exe) を使用して、特定のユーザー プロファイルの環境変数を作成しようとしています。コマンドは知ってsetxいますが、ユーザーの変数を作成できません。したがって、私の目標は、マップされたネットワーク ドライブ文字「M:」を対象としたユーザー固有の環境変数を作成することです。ともかく?

4

1 に答える 1

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"
于 2013-11-11T12:55:53.467 に答える