2017-11-04 5 views
0

管理者権限でC#コードから.batファイルを開始したいとします。私はapp.manifestにこれを追加しようとしました:c#コードから管理者権限を持つ.batファイルを(手動で)実行する方法

psi.Verb = "runas"; 

成功せず:私のプロセスへ

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

か、これは情報を起動します。 cmdのタイトルは "Administrator:..."のように見えますが、手動で管理権限を持つ.batファイルを実行すると(右クリック→管理者として実行)、正しく動作しません。 何が問題なのか考えていますか?

EDIT

いくつかの小さなコード:

ProcessStartInfo sti = new ProcessStartInfo(); 
sti.FileName = "myScript.bat"; 
sti.Verb = "runas"; 
Process.Start(sti); 
+0

どのように「正しく動作しませんか? –

+0

さて、.batはレジストリキーを追加する必要があります。私がコードから実行すると、それは動作しません。 –

+0

私は多くのコードを試しました、私はインターネット上で同様の問題を探していたし、コピーしたものでいくつかの成功を得ようとしています。 –

答えて

1

あなたはスクリプトファイルを起動する場合を除き、あなたはプロセスcmd.exeを起動し、ファイルなどの名前を渡す必要があり、そのほとんど正しい持ちそれに対するパラメータ。また、コマンドが完了した後にコマンドウィンドウを保持するかどうかによって、/Kまたは/Cを渡すこともできます。より多くのオプションについてはcmd /?を実行してください。

は、あなたの.batファイルへの実際のパスでbatchFilePath変数の値を置き換え、あなたが現在持っているものの代わりにこのコードを試してみてください、あなたは管理者として、それを実行するためにUACプロンプトを取得する必要があります

var batchFilePath = @"c:\public\temp\temp.cmd"; 

var startInfo = new ProcessStartInfo 
{ 
    FileName = "cmd.exe", 
    // Use /K to have the new cmd window stay after the batch file is done 
    Arguments = $"/C \"{batchFilePath}\"", 
    Verb = "runas" 
}; 

Process.Start(startInfo).WaitForExit(); 
+0

私はあなたの助けに感謝して、あなたのコードは完全に実行されています。 Verb = "runas"と手動でクリックされた管理者としての実行の違いがあります。それが私の問題です –

関連する問題