如何强制系统以C#管理员身份运行

时间:2013-09-17 17:01:48

标签: c# .net visual-studio-2010 c#-4.0 .net-4.0

嗨每一个我都有一个问题,我需要创建一个应用程序,可以从服务器上的路径获取一些文件,所以如果PC上的用户是管理员,系统工作顺利,但如果用户不是管理员,系统需要工作比如“Run AS ...”然后选择管理员用户! 问题是如何强制应用程序以管理员用户身份运行Code?

这是我的代码

private void frmMain_Load(object sender, EventArgs e)
{
    if (!IsUserAdministrator())
    {
        this.Text += " Not Admin";
        RunAs("System_Updater.exe", "aMohamady@al-Sadhan.Com", "major@123");
    }
    else
    {
        this.Text += " Administrator";
    }
}

public bool IsUserAdministrator()
{
    bool isAdmin;
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
        isAdmin = false;
    }
    catch (Exception ex)
    {
        isAdmin = false;
    }
    return isAdmin;
}

private SecureString MakeSecureString(string text)
{
    SecureString secure = new SecureString();
    foreach (char c in text)
    {
        secure.AppendChar(c);
    }
    return secure;
}

private void RunAs(string path, string username, string password)
{
    ProcessStartInfo myProcess = new ProcessStartInfo(path);
    myProcess.UserName = username;
    myProcess.Password = MakeSecureString(password);
    myProcess.UseShellExecute = false;
    Process.Start(myProcess);
}

但是当我在非管理员用户中使用此代码时,应用程序启动多次? 我重新启动Windows以使其停止

请任何人帮助我............

0 个答案:

没有答案