1

バッチファイル「install.bat」を「」の場所に保存しています

c:\ Users \ abc \ xyz

"。このバッチファイルを管理モードで実行したい

C:\ Windows \ System32

System()APIを使用するフォルダー。誰かが親切にこのVC++をプログラムで達成する方法を知っていますか?

私のコードスニペット::

int ret = System("c:\Users\abc\xyz\install.bat");

このコマンドを実行すると、バッチファイルはもちろん「c:\ Users \ abc\xyz」フォルダーから実行されます。しかし、このバッチファイルをSystem32フォルダーから実行したいですか?

前もって感謝します。

4

3 に答える 3

3

1 つのオプションはcd、.bat ファイルの最初の行としてコマンドを配置することです。呼び出しプロセスの作業ディレクトリを変更することもできますが、それはハンマーを使ってナットを割っています。

関数から離れると、systemを呼び出すことができますCreateProcess。これにより、新しいプロセスを作成するときに必要なすべての詳細を指定できます。コマンドインタープリターを実行する必要があります (COMSPEC環境変数を読み取って見つけます)。へのパラメータの 1 つとして、新しいプロセスの作業ディレクトリを指定できますCreateProcess

CreateProcessただし、呼び出すのはかなり難しいです。また、管理者権限への昇格を要求するのにも役立ちません。代わりに を使用できますShellExecute"runas"昇格につながる動詞の受け渡しを呼び出します。

ShellExecute(0, "runas", "c:\\Users\\abc\\xyz\\install.bat", NULL, 
    "C:\\Windows\\System32", SW_SHOW);
于 2013-01-31T19:05:51.317 に答える
2

ShellExecuteを使用する必要があります。

次のようなもの

ShellExecute(hwnd, "runas", "c:\\Users\\abc\\xyz\\install.bat", NULL, "c:\\windows\\system", SW_SHOWNORMAL );
于 2013-01-31T19:07:14.097 に答える
0

System() を使用せずに、 .batcdファイルを含む場所に移動して、バッチ ファイルを呼び出すだけです。

于 2013-01-31T19:11:41.283 に答える