1

VS プロジェクトで管理者としてバット ファイルを実行したいと考えています。バットファイルにはいくつかのコマンドがあり、そのファイルを実行したいです。これらのコマンドには管理者権限が必要です。コードは下にあります。

AndroidSmS aHelper = new AndroidSmS();
string renameMsg = aHelper.RenameFile();

public string RenameFile() {

        string renameBATPath = ConfigurationManager.AppSettings["RenameBATPath"].ToString();
        string o;
        string str = DateTime.Now.ToOADate().ToString();
        using (var p = new System.Diagnostics.Process())
        {
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = @renameBATPath;
            p.StartInfo.Arguments = DateTime.Now.ToShortDateString().ToString().Replace('/', '-')+".db";
            p.Start();
            o = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
        }
        return o;

    }

これらのコマンドを実行する方法や、このファイルを管理者モードで実行する方法を教えてください。あらゆる種類のヘルプをいただければ幸いです。よろしくお願いします

4

2 に答える 2

2

いくつかのオプションがあります

バッチファイルを起動するための管理者資格情報を指定できます

p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @renameBATPath;
p.StartInfo.Arguments = DateTime.Now.ToShortDateString().ToString().Replace('/', '-')+".db";
p.StartInfo.UserName = "administrator";
char[] password = { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' };
SecureString adminpassword = new SecureString();
foreach (char c in password)
{
    adminpassword.AppendChar(c);
}
p.StartInfo.Password = adminpassword;
p.Start();

または、アプリで UAC を要求することもできます。これは、アプリが開始したものはすべて同じ特権で実行されることを意味します。

これを行うためのマニフェスト ファイルの作成方法については、こちらを参照してください。

于 2012-10-03T09:03:21.287 に答える
0

UAC をスキップすることはできないため、ここで回答が得られると思います: http://www.vistaclues.com/run-a-batch-file-as-an-administrator/

.BAT ファイルを直接呼び出す代わりに、ショートカットを作成し、管理者として実行するように設定して実行するだけです。

于 2012-10-03T08:19:34.493 に答える