0

C# は初めてで、ユーザーの起動時に起動する小さな exe を作成し、いくつかのオプションを提供し、ターミナル サーバーに接続し、管理 (パスワードで保護されます..何らかの方法で :) ) と終了します。

今、管理者はタスクマネージャーを別のユーザーとして起動したいので、それを呼び出しcmd.exerunas起動することを考えました。しかし、私はあまり運が良くありません。以下のコードは起動するだけですがcmd.exe、指定した引数はありません。

private void btnAdministration_Click(object sender, EventArgs e)
{
    ProcessStartInfo processAdmin;
    processAdmin = new ProcessStartInfo();
    processAdmin.FileName = "C:\\Windows\\system32\\cmd.exe";
    processAdmin.Arguments = "runas /user:admin C:\\Windows\\System32\\taskmgr.exe";
    Process.Start(processAdmin);
}
4

2 に答える 2

1

それを試してください:

private void btnAdministration_Click(object sender, EventArgs e)
        {
            string password = "userpassword";
            SecureString secureString = new SecureString();

            foreach(char chr in password) secureString.AppendChar(chr);

            ProcessStartInfo processAdmin;
            processAdmin = new ProcessStartInfo();
            processAdmin.UseShellExecute = false;
            processAdmin.Password = secureString;
            processAdmin.UserName = "admin";
            processAdmin.FileName = "taskmgr.exe";
            processAdmin.WorkingDirectory = "C:\\Windows\\System32";
            Process.Start(processAdmin);

        }

それについてMSDNが言っていること:

ProcessStartInfo オブジェクトで Domain、UserName、および Password プロパティを設定することは、ユーザー資格情報を使用してプロセスを開始するための推奨される方法です。

ノート:

セキュリティ上の問題になる可能性があるため、文字列にパスワードを設定することはお勧めしません

于 2013-09-14T17:11:23.187 に答える
0

runas.exe を実行してみる

        ProcessStartInfo processAdmin;
        processAdmin = new ProcessStartInfo();
        processAdmin.UseShellExecute = false;
        processAdmin.FileName = "runas.exe"
        processAdmin.Arguments = "/user:Administrator \"c:\\Windows\\System32\\taskmgr.exe\""
        Process.Start(processAdmin);
于 2013-09-14T17:21:29.450 に答える