1

大家好,我有一个问题,我需要创建一个可以从服务器上的路径获取一些文件的应用程序,因此如果 PC 上的用户是管理员,则系统工作顺利,但如果用户不是管理员,则系统需要像“运行”一样工作AS...”然后选择管理员用户!!问题是如何强制应用程序以管理员用户身份运行代码?

这是我的代码

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 重新启动以使其停止

请任何人都可以帮助我............

4

0 回答 0