web-dev-qa-db-ja.com

管理者としてバッチファイルを実行する-Windows7-ネットワークファイルシステムから「名前を付けて実行」コマンド

プログラムインストーラーの配信を設定する必要があります。

このプログラムには、program_installer.exeと、インストーラーの作成時にインストーラーに含めることができないフォルダーがあります。

したがって、ユーザーがプログラムをインストールする必要がある場合、私は彼にメール経由でバッチファイルを送信します

@echo off
if DEFINED PROGRAMFILES(X86) (
SET TOOL_INSTALL_DIR="%PROGRAMFILES(X86)%\myfolder"
) else (
SET TOOL_INSTALL_DIR="%PROGRAMFILES%\myfolder"
)

MKDIR %TOOL_INSTALL_DIR%
copy /y \\rk0012352\Public\lkh5iwwh.m4s %TOOL_INSTALL_DIR%


START %PROGRAMFILES%\program_installer.exe

問題は、ユーザーがBATCHを実行してCOPYコマンドを実行すると、Windows 7では、管理者権限がないためにコマンドが失敗することです。

XPと7の両方で管理者としてそのコピーコマンドを実行するにはどうすればよいですか?

ユーザーがINSTALL.BATで電子メールを取得したときに、[管理者として実行]をクリックすることはできませんか?

残念ながら、その答えは、ほとんどの人がそれを行わず、機能しないと不平を言うだけです。さらに、Outlookなどの多くの電子メールクライアントは「開く」「保存」選択パネルを要求し、ほとんどのユーザーは直接開くをクリックします(権利なしのエラーが発生します)

「runas」コマンドでは、マシンの管理者名を指定する必要があり、すべてのコンピューターでadminユーザーがどのように呼び出されるかを知ることができません。

なにか提案を?

7
NoobTom

少し注意が必要ですが、実行できます。

まず、ユーザーが管理者であるかどうかを(バッチファイルから)知る必要があります。もしそうなら、あなたは単にインストールを続けることができます。そうでない場合は、別のcmd.exeインスタンスを実行して、管理者としてバッチファイルを実行できます(runasコマンドを使用)。

ユーザーが管理者であるかどうかを検出するには、次の投稿を参照してください: http://www.tomshardware.co.uk/forum/169421-36-determine-batch-file-user-administrator (バッチ自体を昇格させるための完全なコードもあります)。

7
Adriano Repetti

同じことではありません。

管理者グループに所属している場合は、独自のアクセス許可のスコープを上げることと、スコープ内で実行することには違いがあります。

runas /user:[email protected] program.exeを使用するだけでは、右クリックして[管理者として実行]を選択するのと同じではないようです。

2

PowerShellには これを行う方法 があります:

PS> Start-Process powershell -Verb runAs
2
Rustam