Сделал так работает на моем компьютере.
Как это сделать что бы удобнее было, запускать процесс с правами администратора на других компьютерах где имена пользователей другие и пароли другие? С минимальным количеством всяких вопросов пользователю?
            var pass = new SecureString();
            pass.AppendChar('1');
            pass.AppendChar('2');
            pass.AppendChar('3');
            pass.AppendChar('4');
            pass.AppendChar('5');
            pass.AppendChar('6');
            pass.AppendChar('7');
            var psi = new ProcessStartInfo
            {
                FileName =@"C:\WINDOWS\notepad.exe",
                UserName = "Sergey",
                Domain = "",
                Password = pass,
                UseShellExecute = false,
                RedirectStandardOutput = false,
                RedirectStandardError = false,
                Verb = "runas"  
                
               
            };
            try
            {
                Process.Start(psi);
            }
            catch (Exception er)
            {
                MessageBox.Show(er.ToString());
            }
Думаю нужен такой алгоритм, поправьте если что
1)проверить текущего пользователи является ли он администратором.
2)если не администратор предложить войти под администратором.
3)если администратор как-то получить пароль и ввести его в var pass = new SecureString();
4)Получить имя пользователя и ввести его  UserName =
3,4 пункты наверно будет сложно сделать?
Добавлено через 1 час, 21 минуту и 56 секунд:Или достаточно указать 

  Verb = "runas" Чтобы программа запускалась от имени администратора?