3

ほとんどの場合、通常のユーザーとして実行する必要があるプログラムがありますが、サービスを停止して開始する必要がある場合があります。ほとんどの場合通常のユーザーとして実行されるが、一部の機能のために管理者モードに昇格するプログラムを作成するにはどうすればよいですか?

4

3 に答える 3

2

実行中のプロセスを昇格させることはできませんが、次のいずれかを行うことができます:-

プロセスを昇格して再起動します

private void elevateCurrentProcess()
{
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.UseShellExecute = true;
    startInfo.WorkingDirectory = Environment.CurrentDirectory;       
    startInfo.FileName = Application.ExecutablePath;
    startInfo.Verb = "runas";

    try
    {
        Process p = Process.Start(startInfo);
    }
    catch
    {
        // User didn't allow UAC
        return;
    }
    Application.Exit();
}

この方法は、プロセスが引き続き昇格して実行され、UAC プロンプトが表示されなくなることを意味します。良いことも悪いことも、オーディエンスによって異なります。

昇格が必要なコードを別のexeに入れます

マニフェストを requireAdministrator として設定し、別のプロセスとして開始します。このサンプルコードを参照してください

この方法は、操作を実行するたびに UAC プロンプトが表示されることを意味します。

最適な方法は、対象ユーザー (管理者の種類かどうか) と昇格操作の頻度によって異なります。

于 2008-11-20T04:06:25.500 に答える
1

私の知る限り、管理者として実行する別のプロセスを開始する必要があります。プロセスがすでに開始されていると、プロセスを昇格させることはできません。

この質問を参照してください。

于 2008-10-30T00:45:00.483 に答える
0

偽装と呼ばれるものを使用する必要があります。

[ http://support.microsoft.com/kb/306158][1]

上記は、ASP.Net アプリでそれがどのように達成されるかを示していますが、コードはおそらくあなたのニーズとほぼ同じです。

于 2008-10-30T00:38:43.927 に答える