2013-07-16 27 views
6

2つの部分で実行されるスクリプトがあります。最初の部分は管理者のアクセスが必要です(HOSTSファイルを更新し、いくつかのコピー/上書きを行います)。その部分が終了したら、スクリプトの最初の部分が更新されたホスト名エイリアスを使用してドライブをマップする必要があります。管理者としてバッチを実行して(自動昇降)

SO Questionを使用して昇格された権限を取得する方法を知りました。しかし、ドライブをマッピングすると(管理者では)ドライブが管理者のセッションにマッピングされます。 2番目のスクリプトを実行するには、ユーザーモードに戻す必要があります。

これは、毎日少なくとも1回、おそらく1日に複数回実行するスクリプトです。可能であれば、ちょうど1つの.batファイルであるソリューションを作成しようとしています。理由から、スクリプトはperlで書かれています。

物事私が試してみました:

  1. ます。runas /ユーザーの使用:regular_userコマンド
  2. 1つのbatファイル2つのバッチファイルの呼び出しを使用した(この「作品(これはない作業を行います)何らかの理由で両方が同時に実行されます)
  3. 2つのbatファイルを別々に実行し、手動で実行します。
  4. はSOの検索が、私はADMIN->ユーザーを見つけることができなかっただけではなくUSER->管理者

TLDR:どうすればよいのデ昇格バッチファイルで管理者モードからユーザーモードに?

答えて

2

ベストサードパーティのリモート/ローカル実行ツールを使用することをお勧めします。Windows Sysinternals PSEXEC。信任状を提供し、PSEXECを使用して必要なものを達成することができます! PSEXECコマンドをバッチファイルまたはvbsに入れ、問題なく実行できます。単一の一意のバッチファイルで資格情報をミキシングしながら、PSEXECの昇格されたアクセス権を持つコマンドと高度のない次のコマンドを呼び出すこともできます。

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

+0

これは有望です。ありがとう。 – Ishikawa91

0

高め、継続した後、最初の非隆起部分を行います。

+0

OPのシナリオで可能かどうかはわかりません。 OPは最初にHOSTSファイルを更新し、次に新しいエイリアスを使用して2番目の部分を実行する必要があると言います。 – user1071777

2

あなたは2つのバッチファイルを使用している場合は、(unelevated物事を続けている)Main.cmdを使用して高度にバッチElevatedBatch.cmdを呼び出す:

@ECHO OFF 
START /WAIT ElevatedBatch.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9 
REM here you can do unelevated stuff: 
ECHO Running unelevated now 

パラメータ/WAITElevatedBatch.cmdが終了するまでスクリプトが待機することを保証します。 ElevatedBatch.cmdの場合は、thisのようなテンプレートを使用して上げることができます。

関連する問題