web-dev-qa-db-ja.com

再起動後、マップされたドライブが昇格したユーザーに対して保持されないのはなぜですか?

これはこの問題に関連しています: 管理者モードのコマンドプロンプトはマップされたドライブを認識しません

昇格したユーザーとしてプログラム(InstallShield)を実行する必要がありますが、このプログラムはネットワーク共有にあるファイルにもアクセスする必要があります。最大パス長(および読みやすさ)の問題があるため、(はるかに長いUNCパスではなく)マップされたドライブを使用してこれらのファイルにアクセスしたいと考えています。ただし、上記の問題により、(Windowsエクスプローラーを介して)マップしたドライブが認識されません。

残念ながら、推奨されるEnableLinkedConnectionsレジストリハックは私にはまったく機能していないようです。代わりに、次のコマンドを使用して、昇格されたコマンドプロンプトを介してドライブをマッピングすることにより、(一時的に)動作させることができます。Net Use Z: \\machine\path /persistent:yes

問題は、このマップされたドライブが再起動後に実際には持続しないことです(/persistent:yesパラメーターにもかかわらず)。確かに、手動で実行したスクリプトを使用してすばやく再マップできますが、もっと良い方法があるはずです。

昇格したユーザーとしてログインスクリプトを自動的に実行する方法がわかりません。それ以外の場合は、それを試してみます。また、なぜNet Useコマンドが期待どおりに持続しないのか疑問に思っています。

関連する可能性があるため、これはWindows8.1仮想マシンです。また、永続的にマップしてアクセスしようとしているネットワーク共有は、VMware Workstationによって提供されます(オプションの共有フォルダー機能を介して)。

これはおそらくタイミングの問題なのだろうか? ( マップされたドライブが再起動後にではなく、ログアウトして再度ログインした後にのみ再表示されるのはなぜですか? を参照してください。


更新

そもそもマッピングが持続しない理由についてはまだ答えがありませんが、なんとか回避策を見つけることができました。

とにかく、ログイン時にバッチファイルを実行するようにWindowsで簡単なスケジュールされたタスクを設定しました。このバッチファイルは、ネットワーク共有を目的のドライブ文字にマップします(同じNet Useコマンドを使用)。また、最高の特権で実行タスク設定がチェックされていることを確認しました。出来上がり!再起動した後でも、昇格されたプロセスがマップされたドライブを表示してアクセスできるようになりました。

8
Jeremy

同様の問題が発生しました。これらはネットワーク全体で実行した手順であり、この作業を行ったすべてのPCは、再起動後もマッピングを維持しています。 (バッチファイルは、ユーザーがファイルを見つけた場合に管理者のパスワードを提供するため、使用したくありませんでした。)

  1. ワークステーションで、再起動後、切断されたマップされたドライブをダブルクリックします。管理者のユーザー名とパスワードのログインを入力して、マッピングを有効にします。ドライブは正常にマップされます。
  2. コマンドプロンプトを開きます。
  3. 次のコマンドを入力します。NetUse\ computername\sharedfoldername Administratorpassword/user:administratorloginname/persistent:yes
  4. 通常、これを複数回実行することはできないことを示すエラーメッセージが表示されます。ただし、エラーメッセージは無視してください。
  5. コンピューターを再起動します。
  6. この手順の後、再起動に関係なく、ドライブは常に永続的にマップされることがわかりました。

構文例:

  • コンピューター名:ABCD123-DT
  • 管理者ログイン名:管理者
  • パスワード:321DCBA!
  • 共有フォルダー名:SharedData

c:> Net Use\abcd123-dt\SharedData 321DCBA!/user:Admin/persistent:yes

注:再起動する前に成功の確認が必要な場合は、コマンドプロンプトで「NetUse」と入力し、Enterキーを押すと、マップされたドライブが一覧表示されます。

1
Ken Evers

同様の問題に直面しており、次のようにタスクスケジューラを使用することになりました。

schtasks /create /tn "my_mount" /tr "Net Use V: \\hostname\path /persistent:yes" /sc onstart
1
was