2013-02-01 30 views
14

クライアント/サーバーチェックプログラムを作成していますが、管理者として実行する必要があります。 私はこれを私のネットワークとユーザーでサイレントに実行したいと思いますが、 "管理者として実行"プロンプトが表示されないようにしています 管理者として自動実行させるためのバッチファイル/管理者として実行するバッチスクリプト

答えて

13

NOPE - [ - >互換性 - > "このプログラムを管理者として実行する]"というソリューションは動作しません。

このオプションはさえUAC無効

でWindows 7にグレー表示され

-

NOPE - 、 "runasコマンド/ ENV /ユーザー:ドメイン\管理者"

も十分ではありませんこれはユーザーに管理者パスワードを要求するためです。

-

YES - タスクスケジューラ

これは私のために働い使用してジョブを作成します> - UACを無効にします。 タスクスケジューラの下で仕事を作成し、管理者権限を持つユーザーとして実行しますが。 は、明示的にマーク:そう、このタスク

あなたが望む場合は、スクリプトは、レジストリを編集して、その後UACを有効にさせることができますを実行するには、noプロンプトは存在しません 無効にUACを「最高の特権で実行してください」。 私の場合、このスクリプトは、イメージ内でUACが無効になっているWindows仮想マシンの作成によって一度だけ実行されます。

スクリプトのための最良のアプローチを楽しみにしています。 、

ニカを

set ELEVATE_APP=Full command line without parameters for the app to run 
set ELEVATE_PARMS=The actual parameters for the app 
echo Set objShell = CreateObject("Shell.Application") >elevatedapp.vbs 
echo Set objWshShell = WScript.CreateObject("WScript.Shell") >>elevatedapp.vbs 
echo Set objWshProcessEnv = objWshShell.Environment("PROCESS") >>elevatedapp.vbs 
echo objShell.ShellExecute "%ELEVATE_APP%", "%ELEVATE_PARMS%", "", "runas" >>elevatedapp.vbs 
DEL elevatedapp.vbs 

よろしく:私はこれまでの任意の簡単なスクリプトを発見していないとして

+1

UACの部分 UACを無効にする C:¥Windows¥System32¥cmd.exe/k%windir% \ System32 \ reg.exe HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 0/f UACを有効にする C:\ Windows \ System32 \ cmd.exe/k% windir%\ System32 \ reg.exe HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 1/f – zenin

4

その構文を使用して可能:

RUNAS [/profile] [/env] [/netonly] /user:user Program 

Key : 
/profile Option to load the user's profile (registry) 
/env Use current environment instead of user's. 
/netonly Use the credentials specified only for remote connections. 
/user Username in form [email protected] or DOMAIN\USER 
([email protected] is not compatible with /netonly) 
Program The command to execute 

例:。

runas /env /user:domain\Administrator <program.exe/command you want to execute> 
+10

パスワードの入力を求めるプロンプトが表示されますが、パスワードは必要ありません。 – eddyq

+0

@eddyqしかし、質問の本文が彼の望む通りに変わったとしても、これは質問のタイトルに答えます。 – leetNightshade

+0

タイトルは問題ではありません。本文は問題です。タイトルはタイトルです。詳細が含まれているため、ボディが優先されます。 –

3

あなたはカップルのオプションがあり

  1. バッチファイルとネイティブコマンドのみを使用して実行する必要がある場合は、How can I auto-elevate my batch file, so that it requests from UAC admin rights if required?をチェックしてください。

  2. サードパーティのユーティリティがオプションの場合は、Elevateのようなツールを使用できます。これは、パラメータとして昇格したいプログラムで呼び出す実行可能ファイルです。
    このように: elevate net share ...

0

スタートアップ項目として入れることができます...スタートアップ項目は、管理者として実行するように求めるプロンプトを表示しません。

チェックこの記事Elevated Program Shortcut Without UAC rompt

+0

スタックオーバーフローに関する回答に「Googleが回答を見つける」を含めるべきではありません。 –

+0

申し訳ありませんが悪いです。編集する – sandrows

+0

今より良い、ありがとう。 –

1

は、ショートカットを作成し、常に管理者として実行するショートカットを設定します。それへのショートカットを作成

エディタとnameit.batでバッチファイルを作成します。ハウツーオタクフォーラムMake a batch file to run cmd as administratorソリューション

。 Nameit.bat - ショートカット。 Nameit.bat - ショートカット - >プロパティ - >ショートカットタブ - >詳細を右クリックし、管理者として実行をクリックします。ショートカットから実行します。

+2

バッチファイルまたはそれを指しているショートカットに対して、「管理者として実行」を設定することはできません。 – StormPooper

+1

バッチファイルには設定できませんが**ショートカットを指すように設定することができます – icc97

1

は、ここに私の2セントです。

0

上記の回答があなたの好みでない場合は、autoITを使用して、自分の資格情報を持つ特定のユーザーとしてファイル(またはこれまでのファイル)を実行できます。

このユーザーのprivelagesを使用してプログラムを実行するスクリプトのサンプル。

installAdmin() 

Func installAdmin() 
    ; Change the username and password to the appropriate values for your system. 
    Local $sUserName = "xxxxx" 
    Local $sPassword = "xxx" 
    Local $sDirectory = "C:\ASD4VM\Download\" 
    Local $sFiletoRun = "Inst_with_Privileges.bat" 

    RunAsWait($sUserName, @ComputerName, $sPassword, 0, $sDirectory & $sFiletoRun) 
EndFunc ;==>Example 

AutoIT can be found here. - >これは、実行することができます.exeファイルにコンパイルされ.ua3形式を使用しています。

1

私はMattのスクリプトにこのわずかな変更を加えて、単一のスクリプトから実行できるようにしました(これをUAC呼び出しが必要なスクリプトの先頭に追加するだけです)。しかし、ブログで見つけまし:

:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 

私の修正は、2つのファイルの引数を使用して、あなたが見ることができるよう、特にエレガントされていないが、仕事をしていません(とあなたが常に最初に予約することによりテールエンドでそれらを離れて非表示にすることができますダミーのプレースホルダを使用する引数はほとんどありません)。さらに、AFAIK Mattのスクリプトはファイルパス内のスペースをサポートしていません。この制限はこのスクリプトの変更にも当てはまります。

この問題は、VBSがこれらのパスを処理する方法に内在しているようですが、以下のリンクでは、ファイルを使用してこのような回避策を必要とせずに1つのスクリプトから実行するUACを呼び出すためのVBSベースのソリューション引数もファイルパスにスペースをサポートしています。あなたには、いくつかの理由で、スペースの問題を回避され、気づくよう

http://pcloadletter.co.uk/2012/12/11/uac-elevation-for-batch-script/

このリンク上のスクリプトは若干異なるVBS呼び出しを行います。

4
@echo off 

call :isAdmin 

if %errorlevel% == 0 (
    goto :run 
) else (
    echo Requesting administrative privileges... 
    goto :UACPrompt 
) 

exit /b 

:isAdmin 
    fsutil dirty query %systemdrive% >nul 
exit /b 

:run 
    <YOUR BATCH SCRIPT HERE> 
exit /b 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    del "%temp%\getadmin.vbs" 
    exit /B` 
+0

これは私のために完全に機能します。ありがとう。 – Emad

1

後は、回避策です:

  1. は、.batファイルのショートカット
  2. プロパティを開きショートカットのを作成します。ショートカットタブのアドバンスドをクリックします。管理者として、あなたのバッチスクリプトを実行しますショートカットを実行
  3. ティック「管理者として実行」