2016-06-28 17 views
0

私は何度も検索し、まだこの答えを見つけていません。Map Drive in RunOnceバッチファイル

新規または再イメージ化されたコンピュータのユーザーアカウントとウィンドウのカスタマイズを設定するスクリプトがあります。 RUNONCEレジストリエントリを介してドライブをマッピングしていますが、問題が発生しています。このローカルネットワークはワークグループであり、ドメインではなく、すべてのPCがWin7ProまたはWin10Proを実行しています。オフィスマネージャーのPCはローカルのファイルサーバーで、私は他のコンピューターからドライブをマップしようとしています。ここで

は、私は問題を抱えているRUNONCEバッチファイルの一部です:私のシナリオでは

:PROMPTFORPMHOSTNAME 
ECHO This PC was identified during InitialSetup as a Leasing Office PC. 
ECHO This PC's Host Name is %computername%. 
ECHO. 
SET /P PMHOSTNAME="Enter the Property Manager PC Hostname: " 

:MAPDRIVE 
ECHO - Map M Drive 
NET USE M: /delete >nul 2>&1 
NET USE M: \\%PMHOSTNAME%\Data >nul 2>&1 
NET USE M: \\%PMHOSTNAME%\Data /user:%computername%\[username] [password] /persistent:yes 
NET USE /persistent:yes >nul 2>&1 
TIMEOUT /T 5 /NOBREAK >nul 2>&1 

、最初のスクリプトは、NET USERを介してユーザアカウントを作成するために、ローカルの管理者アカウントを使用していますRUNONCEをレジストリに配置します。再起動後、私は新しく作成されたアカウントを入力し、RUNONCEは計画どおりに実行されます。

問題は、RUNONCEが管理者として実行されていることです。そのため、ドライブをマップする際に、ユーザーレベルではなく管理者レベルで実行されます。ドライブが正常にマッピングされたと表示されますが、表示されません。

CMDを管理者として1回、ユーザとして1回の2つのインスタンスで実行することで、これを複製できます。ドライブを管理者としてマップすると、ドライブが正常に実行されたことが表示され、エクスプローラに表示されません。ユーザーとしてドライブをマップすると、正常に実行され、必要なときに表示されます。

私はRUNONCEをログインユーザーとして実行する方法を知っている必要があります。私が間違っていることや、私が紛失していることが明らかでなければならないことを示すだけで、私の現在のレベルの欲求不満は与えられていません。 :P

ありがとうございます!私は本当に前もってあなたの助けに感謝します。 :)

+0

エラーメッセージをNULにリダイレクトせずに実行すると、ドライブレットがすでに使用中であるというエラーメッセージが表示されます。あなたは 'net use M:'を2回使います! – Stephan

+0

それは私のせいでした。私はメモ帳+でスクリプトを手直ししていました。私はここで投稿に貼り付ける前に、一番上のNET USE行を削除するのを忘れていました。私の悪い。 :P – MaxKorban

答えて

0

固定ネットワークドライブマッピングは、ユーザーアカウントごとにWindowsによって常に登録され、ネットワークドライブはユーザーがログインしたときにのみ接続され、ユーザーログアウト時に自動的に切断されます。

マイクロソフトMSDNの記事Run and RunOnce Registry Keysで説明したように、2つののRunOnceレジストリキーがあります:64ビット版Windowsでは

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 

キー、上記のようにしても、さらに2つののRunOnceは、64ビットアプリケーションのために存在しています以下、このタスクのために重要ではありません32ビットアプリケーションのためのものである:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce 
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce 

使用することは良いアイデアではありません管理者アカウントのまたはHKCUは、管理者アカウントを使用して一度実行するバッチファイルを登録して、共有をドライブ文字Mに永続的にマッピングする場合に使用します。

ベター

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

から自分自身を削除するためのreg deleteを使用しています

HKEY_USERS\.DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

下のバッチファイルとバッチファイルを登録することです。しかし、これは場合にのみ、ユーザーアカウントを働く永続的なドライブ上の既定のユーザーアカウントレジストリハイブにバッチファイルを登録すると、一度マップが作成される必要があります。

私は全然のRunOnceを使用して、代わりにショートカットを作成しないことも可能である(* .LNK)レジストリの下で値スタートアップからreg queryとレジストリから読み込まれたディレクトリ内のファイルキー

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 

実行中のバッチファイルは、現在のユーザーアカウントのスタートアップディレクトリ内のショートカットファイルを削除します。つまり、レジストリから読み取られたディレクトリ内のreg queryスタートアップレジストリキー

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 

も、すでに窓の高さと幅などのプロパティを含めることができショートカットファイルとしてのRunOnceを経由してバッチファイルを実行しているよりもおそらく優れている存在しないバッチファイルを実行する上でのユーザーアカウントでの作業このアプローチこの作業に適しています。ところで

:ライン

NET USE M: \\%PMHOSTNAME%\Data /user:%computername%\[username] [password] /persistent:yes 

は、ドライブマッピングを作成して、現在のユーザーアカウントのレジストリで、それは永続的な保存には十分です。最悪の場合、上の行とこの行の下の行は逆効果です。

NET USE M: /delete /yes 2>nul