私の雇用主はActive Directoryのグループポリシーで、Windows 7のラップトップのHOMEDRIVEを “M:”(マップされたネットワークドライブ)に、HOMEPATHを”\”に設定しています。私はその共有ドライブのルートの読み取り専用の権限を持っているので、私はWindowsのホームディレクトリにファイルやディレクトリを作成することはできません。IT部門と連携する私の試みは失敗しました
起動時やログイン時に、これらのエンバーをグローバルに変更する方法はありますか?すべてのアプリケーションで代替の値(「C:」や「\Users\myname」など)を使用する必要があります。私は、ユーザのホームディレクトリに環境設定ファイルを保存するユーティリティ(gvimなど)をいくつかインストールしています
重要: “システムのプロパティ > 環境変数” でこれらの環境変数を変更してもうまくいきません。私は、これらをユーザ変数とシステム変数の両方に設定してみました(再起動を含む)。DOSウィンドウでSET HOME
と入力すると、私の設定が無視されていることがはっきりとわかります。また、エクスプローラのコンテキストメニュー項目(”Edit with Vim “のようなもの)が正しく動作する必要があるため、Windowsのショートカットで “Start in “を使用しても解決しません
私はこの会社のラップトップの管理者権限を持っていますが、私はWin7の達人ではありません。昔は、起動スクリプトを使えばすぐに解決しただろう。それは今日も可能ですか?ありがとうございます
54 MykennaC 2011-03-09
以下は私が開発したハックです。これらはエレガントなものではありませんが、あなたの企業環境では機能的かもしれません
HOMEDRIVE Only
HOMEDRIVE / HOMEPATHしか使わないアプリケーションが多いようです。その場合は、UNCドライブの管理パスを経由して、ベースとなるドライブレターをローカルユーザーのパスにリマップするスタートアップスクリプトを作成します
set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username
net use g: /delete
net use g: \\localhost\C$\Users\username
HOMEDRIVE ローカルデフォルト
名前で「Server」にアクセスする必要がない場合は、グループポリシー設定が失敗して、ローカルマシンにフォールバックすることができます。一番簡単な方法は、「C:\\WindowsSystem32\driversetc\hosts」に、次のようなエントリを追加することだ
127.0.0.1 Server
再起動すると、以下のようなものが表示されるはずです
set HOME
HOMEDRIVE=C:
HOMEPATH=\Users\username
ハイブリッドなローカル/リモートUNCパスを持つHOMEDRIVE/SHARE
もし、いくつかの UNC パスの名前で “Server” にアクセスしたいが、他のパスをローカルパスで上書きしたい場合、私は次のような忌まわしいものを開発しました。注意: “Server “への直接のサーバ接続は、ローカルマシンに解決されます。私は、”Server “がファイルサーバでしかない場合にのみ、この解決策をお勧めします
サーバーをローカルマシンにリダイレクトするように変更します
127.0.0.1 Server
証明書がローカルUNCパスに渡されることを許可するために、次のMulti-Stringレジストリ値をHKEY_LOCAL_MACHINE_MACHINE\SYSTEM\CurrentControlSet\ControlLsaMSV1_0に追加します
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ BackConnectionHostNames = Server
Serverのルートとなるダミーディレクトリを作成します
set DUMMY_LOC=C:\Server_Dummy mkdir %DUMMY_LOC% cd /D %DUMMY_LOC%
実際のサーバーに誘導したいUNCパスごとに
rem Alternatively you can use an IP below, but it is more likely to break if DNS changes set SERVER_FQDN=Server.network.blah.com rem Take a look at what's available... net view \\%SERVER_FQDN%\ mklink /D Remote_Example \\%SERVER_FQDN%\Remote_Example net share Remote_Example=%DUMMY_LOC%\Remote_Example /grant:everyone,FULL
ローカルで定義したい各UNC共有(Usersなど)に対して
rem The link isn't really necessary for the share, I just find it easier to manage when all of these hacks are in the same directory mklink /D Users C:\Users net share Users=%DUMMY_LOC%\Users /grant:everyone,FULL
Reboot
この例では、以下のUNCパスを解決することができます
\\Server\Remote_Example => \\Server.network.blah.com\Remote_Example
\\Server\Users => C:\Users
このパス解決は、ドライブのマッピングの前に行う必要があります。マッピングに関連付けられた UNC パスが有効である限り (ローカルでもリモートでも)、ドライブレターは期待通りに動作するはずです
例えば、私の設定では、以下の変数がドメインによって強制されています
set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username
しかし、私のマッピングのせいで、結果は
G: => \\Server\Users\username => C:\Users\username
42 Terrance 2012-10-05
私が見つけた最良の解決策は、ログイン中とuserinit.exe
の前に変数を設定することでした
これは私がやったことです。まず、C:\Windows\System32\userinit.cmd
でバッチファイルを作成し、それを含む
@ECHO OFF
SET HOMEDRIVE=C:
SET HOMEPATH=\Users\%USERNAME%
SET HOMESHARE=\\localhost\C$\Users\%USERNAME%
@START C:\Windows\system32\userinit.exe
で、レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
の値をC:\Windows\System32\userinit.cmd
に変更しました
詳細はこちらをご覧ください。https://technet.microsoft.com/en-us/library/cc939862.aspx
3 Ali Malekpour 2016-08-04
私は起動スクリプトでSETX
を使用しましたが、それは私のために機能しました。私の回答を参照してください
1 Mark Mikofski 2012-11-15
これらのパスは自動的にユーザープロファイルのある場所に設定されていると思います。あなたが参照しているホームドライブとは、ntuser.datやアプリケーションデータ、その他のユーザープロファイルフォルダがある場所のことですよね?NT3.xでは、”ユーザープロファイル “はユーザーレジストリのハイブに設定を入れただけのもので、ユーザーごとにホームパスを設定することができました。それがNT4では、デスクトップ、マイドキュメント、スタートメニューなどを含むユーザープロファイルとして統一されました
すべてのプロファイルの場所は、以下のレジストリキーに格納されています
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
特別なプロファイルとサブキーには、システム上のアクティブなプロファイルごとにいくつかの値があります。これらは、それらが所属するユーザアカウントの SID によって設定されます。あなたの値を見つける最も簡単な方法は、(ProfileImagePath
の値の下にある)正しいパスを探してスクロールすることです。この値を好きなパスに変更するだけで、次にログオンしたときに有効になります。最初にファイルを新しいパスにコピーするようにしてください
ログインしているアカウントからプロファイルを移動しなければならない場合(つまり、MikeCとしてログインしていて、MikeCのプロファイルをコピーしようとしている場合)、ntuser.datファイル(HKEY_CURRENT_USER
を含むレジストリハイブ)はカーネルによってロックされてしまいます。ハイブをコピーすることはできます: regeditに入り、HKEY_CURRENT_USER
を右クリックし、エクスポートを選択し、タイプをレジストリハイブファイルに変更し、新しい場所にntuser.datとして保存してください
私の経験では、winlogonが何か設定が間違っているためにプロファイルの読み込みに問題がある場合、デフォルトのプロファイルから新しいコピーを作成するか、そのセッションで使用するための一時的なコピーを提供して、ログインすることができます。しかし、何かがうまくいかない場合に備えて、システム上で使用する別の管理者ログインを持つことをお勧めします
0 Chris Smith 2011-08-17
他の誰かがgoogle経由でこの質問をしてきた場合に備えて、私はこれを投稿しています。ホームディレクトリを変更してISの人たちに怒られる代わりに、私は仮想マシン上で開発をセットアップして実行しました。マイクロソフトは仮想モードでWidows XPを提供しています。http://www.microsoft.com/windows/virtual-pc/download.aspx
0 Christine Gregory Nicholls 2013-04-03
もう少し簡単な方法としては、以下のスクリプト(env-reset.vbs)をログオン時、アンロック時、そして数分おきにスケジュールされたタスクとして実行する方法があります
Set shell = WScript.CreateObject("WScript.Shell")
Set venv = shell.Environment("Volatile")
scriptingHost = LCase(Right(Wscript.FullName,Len("cscript.exe")))
interactive = Wscript.Interactive And (scriptingHost = "cscript.exe")
If interactive Then
Wscript.Echo "WSCRIPT"
Wscript.Echo " ScriptingHost = " & scriptingHost
Wscript.Echo " FullName = " & Wscript.FullName
Wscript.Echo " ScriptFullName = " & Wscript.ScriptFullName
End If
If interactive Then Call showVolatile()
homedrive = Left(venv("USERPROFILE"),2)
homepath = Mid(venv("USERPROFILE"),3)
If interactive Then
Wscript.Echo "COMPUTED"
Wscript.Echo " homedrive = " & homedrive
Wscript.Echo " homepath = " & homepath
End If
venv("HOMEDRIVE") = homedrive
venv("HOMEPATH") = homepath
If interactive Then Call showVolatile()
Wscript.Quit(0)
Sub showVolatile()
Wscript.Echo "VOLATILE"
Wscript.Echo " USERPROFILE = " & venv("USERPROFILE")
Wscript.Echo " HOMEDRIVE = " & venv("HOMEDRIVE")
Wscript.Echo " HOMEPATH = " & venv("HOMEPATH")
Wscript.Echo " HOMESHARE = " & venv("HOMESHARE")
End Sub
0 camilohe 2014-09-24