私はこのような状況に問題があります。 私は2つのプログラムを作った:C#プログラムは管理者権限を持つ別のプログラムをどのように実行できますか?
最初の1だけでは、管理者provilegesを立ち上げたりされなかったと言って出力を印刷し、秒1、最初のプログラムを実行します管理者特権を使用し、UACを使用しないでください。問題は、2番目のプログラムがadmin権限で最初に起動できないということです。理由は分かりません。 これは私のコードです:最初のプログラムの
コード:2番目のプログラムの
// This only prints if you start as administrator or not.
bool isElevated;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
Console.WriteLine("I got admin privileges?: "+isElevated);
コード:
// This execute the first program with admin privileges without UAC
string username = "myuser";
SecureString userpass = new SecureString();
userpass.AppendChar('m');
userpass.AppendChar('y');
userpass.AppendChar('p');
userpass.AppendChar('a');
userpass.AppendChar('s');
userpass.AppendChar('s');
Process program = new Process();
program.StartInfo.UserName = username;
program.StartInfo.Password = userpass;
program.StartInfo.FileName = "Path/First_program.exe";
program.StartInfo.UseShellExecute = false;
program.Start();
PD:私は、ユーザーにしたくありませんUACを開きます。つまり、私はすでにユーザー名とパスワードを挿入しています。 ありがとうございます。
私の知る限り、あなたはUACをそのように迂回することはできません。実行中のプログラムに管理者権限がない場合、呼び出されたプログラムはUACを起動する管理者権限を要求する必要があります。 – itsme86
あなたはパスワード 'SecureString'を読み取り専用にしようとしましたか? –
@BenVoigt、 "SecureString"はうまくいきます。間違ったパスワードを書き込むと、例外がスローされます。 – suffuko