powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск файла от имени администратора
19 сообщений из 19, страница 1 из 1
Запуск файла от имени администратора
    #38303511
Здравствуйте.
У меня такая проблема:
Пользователи не имеют права устанавливать программы.
У нас приложение проверяет доступность обновлений, скачивает .exe на диск С: impriemsetup.exe.
и затем запускает с правами администратора.
И у меня вопрос : как запустить файл impriemsetup.exe с правами администратора, зная логин и пароль?

Пробовала указать:
myProc.StartInfo.Arguments = @" user " + UserAdml + @" " + passw + "'";
Но не получается, пишет, что надо зайти под админом.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
System.Net.WebClient client = new System.Net.WebClient();
string url = @"http://..../setup.exe";
string loc = @"C:\impriemsetup.exe";
client.DownloadFile(url, loc);
Process myProc = new Process();
myProc.StartInfo.FileName = "impriemsetup.exe";
myProc.StartInfo.WorkingDirectory = "C:\\";
myProc.Start();



Заранее большое спасибо:)
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38303552
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова Елена, см. ProcessStartInfo.UserName и ProcessStartInfo.Password
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38303630
Спасибо большое.
Только теперь еще проблема: на диск С у пользователя файл не сохраняется, а у администратора сохраняется.
Как быть?
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38303660
Пишет что нужно разрешение для этой операции
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38303661
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова ЕленаСпасибо большое.
Только теперь еще проблема: на диск С у пользователя файл не сохраняется, а у администратора сохраняется.
Как быть?

.. сохраняйте в System.IO.Path.GetTempPath();
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38303665
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова Елена, корень системного диска не помойка. Сохранять туда ничего не надо ни администратору ни пользователю. Найдите другой каталог. Например, можно использовать папку Temp.
Код: c#
1.
myProc.StartInfo.WorkingDirectory = System.IO.Path.GetTempPath();
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304264
В качестве директории для загрузки обновления выбрала папку C:\Users\Public, открытую для всех пользователей
Файл обновлений в папку сохраняется, но запустить его с правами администратора все равно не удается.
На стадии myProc.Start(); возникает ошибка, не может запустить процесс.
В чем может быть дело?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
                //Скачиваем и запускаем файл с обновлениями
                System.Net.WebClient client = new System.Net.WebClient();
                string url = @"http://...../setup.exe";
                string loc = @"C:\Users\Public\impriemsetup.exe";
                client.DownloadFile(url, loc);

                Process myProc = new Process();
                myProc.StartInfo.WorkingDirectory = "C:\\";
                myProc.StartInfo.FileName = "impriemsetup.exe";
                myProc.StartInfo.UseShellExecute = false;
                myProc.StartInfo.RedirectStandardError = true;
                myProc.StartInfo.RedirectStandardInput = true;
                myProc.StartInfo.RedirectStandardOutput = true;
                myProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                myProc.StartInfo.UserName = "введен логин админа";
                myProc.StartInfo.Password = ReadPassword("введен пароль админа");
                myProc.Start();//Здесь возникает ошибка
                myProc.WaitForExit();
                myProc.Close();



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public static SecureString ReadPassword(string password)
        {
            SecureString secPass = new SecureString();
            for (int i = 0; i < password.Length; i++)
                secPass.AppendChar(password[i]);
            return secPass;

        }
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304340
Вывела ошибку:
Вход в систему не произведен: имя пользователя и пароль не опознаны
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304429
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова Елена, вероятно у вас домен и надо свойству Domain его имя присвоить.
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304442
Syrex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если тут
Код: c#
1.
myProc.StartInfo.Password = ReadPassword("введен пароль админа");


передать пароль в чистом виде?
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304480
Syrexа если тут
Код: c#
1.
myProc.StartInfo.Password = ReadPassword("введен пароль админа");


передать пароль в чистом виде?

Пароль в чистом виде передаю в ReadPassword и возвращаю на вход зашифрованный.
myProc.StartInfo.Password = ReadPassword("*******");


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public static SecureString ReadPassword(string password)
        {
            SecureString secPass = new SecureString();
            for (int i = 0; i < password.Length; i++)
                secPass.AppendChar(password[i]);
            return secPass;

        }
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304482
Syrex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я понял, я имею ввиду убрать readPassword
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304489
SyrexДа я понял, я имею ввиду убрать readPassword
А в чистом виде не удается присвоить. Говорит, что нужно SecureString
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38304524
bazileПетрова Елена, вероятно у вас домен и надо свойству Domain его имя присвоить.
Домена нет
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38305132
Теперь система говорит, что не может найти указанный файл.
У меня файл лежит здесь:
Код: c#
1.
string loc = @"C:\Users\Public\impriemsetup.exe";


Я пишу директорию:
Код: c#
1.
2.
string path = @"C:\Users\Public\";
myProc.StartInfo.WorkingDirectory = path;


И файл не может найти. Как правильно задать директорию?
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38305141
Я открываю директорию по этому пути, если ее задать в строке поиска
C:\Users\Public\
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38305159
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова Елена, в свойсте FileName нужно указывать полный путь - myProc.StartInfo.FileName = "C:\Users\Public\impriemsetup.exe";
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38305228
bazileПетрова Елена, в свойсте FileName нужно указывать полный путь - myProc.StartInfo.FileName = "C:\Users\Public\impriemsetup.exe";
Да, спасибо, это помогло. Пошла инсталляция, но при замене библиотек приложения пишет, что отказано в доступе.
...
Рейтинг: 0 / 0
Запуск файла от имени администратора
    #38305274
Решила проблему, всем спасибо за советы:)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск файла от имени администратора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]