web-dev-qa-db-ja.com

WindowsのSYSTEMユーザーにネットワークドライブを割り当てる

ファイルにマシンのローカルであるかのようにファイルにアクセスする必要のあるソフトウェアがあるので、Net Useを使用してネットワークドライブを文字としてマッピングしました。これは期待どおりに機能しますが、ソフトウェア自体はSYSTEMユーザーアカウントを使用してサービスとして実行されます。これはオプションでも構成可能でもありません。現在、Net Useを実行したユーザーにドライブがマップされています。

だから私の質問は、システムアカウントがドライブにアクセスできるようにドライブをどのようにマップするのですか?

この質問 で指摘されているように、すべてのユーザーにドライブをマッピングする方法はありません。

より一般的なケースでは、Linuxの場合と同じ方法で、リモートロケーションをシステム全体のローカルファイルシステムに(ブート時に問題なく)マウントする方法を説明します。

8
Javier Mr

バッチファイルなしのcmd(admin privsを使用)による簡単な解決策は次のとおりです。

schtasks /create /tn "my_mount" /tr "Net Use V: \\hostname\directory /persistent:yes" /sc onstart /RU SYSTEM

その後、サーバーを再起動するか、次を実行します。

schtasks /run /tn "my_mount"

編集:ユーザーalfa_989は、私がテストしていないコマンド拡張機能をサポートします。しかし、それはまだ誰かのために役立つかもしれません:

schtasks/create/tn "my_mount"/tr "Net Use V:\ hostname\directory/persistent:yes"/sc onstart/RU SYSTEM/RL HIGHEST

7
was

SQL Serverの一括コピージョブ(BCP)が、組織内の別のグループによって管理されている別のサーバーにファイルを書き出す必要があるのと同じ問題がありました。

トリックは、BCPジョブが使用しているユーザーとしてドライブをマップすることです。ドライブを、目的の宛先(サービスアカウントと呼ばれるもの)に対するアクセス許可を持つ専用のActive Directoryアカウントとしてマップします。私は1つのセットアップを取得するために私のADの人々と協力しなければなりませんでした。 BCPで使用されているユーザーアカウントを確認するには、SQL Serverのクエリウィンドウから次のコマンドを実行します。

EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%

ドライブをマッピングするときは、コマンドプロンプトでwhoamiを使用します。

私の場合、SQLアカウントにSYSTEMアカウントとしてログインできなかったため、バッチジョブを作成しました。これはタスクスケジューラによって実行されますが、SYSTEMアカウントとして実行されますです。コマンドをバッチジョブに入れて、結果をテキストファイルに書き出すことができます。それが表示されないからです。

**以下のバッチジョブ**

ECHO ON

ECHO This will map the drive, but is being run by task scheduler AS the user SYSTEM

ECHO which should make it accessible to the user SYSTEM

ECHO List the existing drives first.

Net Use >> c:\Test\SystemNetUseOutput.txt

Net Use R: \\MyRemoteServer\MyDirectory\ /P:Yes /u:MyDomain\MyUsername pa$$Word

ECHO the /P switch makes the drive remain after reboot

ECHO List the existing drives with the new mapping

Net Use >> c:\Test\SystemNetUseOutput.txt

ECHO See what user this batch job ran under

whoami >> c:\Test\SystemNetUseOutput.txt

ECHO need to exit to allow the job to finish

EXIT

**これが他の誰かの役に立つことを願っています**

3
Phil B

CrashPlanを使用してネットワーク共有をバックアップしようとしたときに、この問題が発生しました。 CrashPlanのサービスはSYSTEMユーザーとして実行されるため、ユーザーアカウントからマップされたネットワーク共有にはアクセスできません。 CrashPlanは、Windowsコンピューターでの回避策を提供します。
回避策で問題が解決し、CrashPlanのサービスがネットワーク共有にアクセスできるようになりました。同じ根本原因があるため、これは問題にも関係するはずです。

この問題に関するCrashPlanの記事
http://support.code42.com/../Mounting_Networked_Storage_Or_NAS_Devices_For_Backup

CrashPlanのWindows向けの回避策
http://support.code42.com/CrashPlan/Latest/Backup/Back_Up_a_Windows_Network_Drive

概要

  1. ドライブをマウントするバッチファイルを作成します(Net Useコマンド(既に使用していたもの)。
  2. タスクスケジューラを使用して、起動時にこのバッチファイルを自動的に実行するタスクを作成します。タスクは、SYSTEMユーザーとして実行するように設定できます。
2
bdr9