Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск файла от имени администратора / 19 сообщений из 19, страница 1 из 1
19.06.2013, 16:11
    #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
19.06.2013, 16:33
    #38303552
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск файла от имени администратора
Петрова Елена, см. ProcessStartInfo.UserName и ProcessStartInfo.Password
...
Рейтинг: 0 / 0
19.06.2013, 17:12
    #38303630
Запуск файла от имени администратора
Спасибо большое.
Только теперь еще проблема: на диск С у пользователя файл не сохраняется, а у администратора сохраняется.
Как быть?
...
Рейтинг: 0 / 0
19.06.2013, 17:20
    #38303660
Запуск файла от имени администратора
Пишет что нужно разрешение для этой операции
...
Рейтинг: 0 / 0
19.06.2013, 17:20
    #38303661
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск файла от имени администратора
Петрова ЕленаСпасибо большое.
Только теперь еще проблема: на диск С у пользователя файл не сохраняется, а у администратора сохраняется.
Как быть?

.. сохраняйте в System.IO.Path.GetTempPath();
...
Рейтинг: 0 / 0
19.06.2013, 17:22
    #38303665
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск файла от имени администратора
Петрова Елена, корень системного диска не помойка. Сохранять туда ничего не надо ни администратору ни пользователю. Найдите другой каталог. Например, можно использовать папку Temp.
Код: c#
1.
myProc.StartInfo.WorkingDirectory = System.IO.Path.GetTempPath();
...
Рейтинг: 0 / 0
20.06.2013, 10:06
    #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
20.06.2013, 10:56
    #38304340
Запуск файла от имени администратора
Вывела ошибку:
Вход в систему не произведен: имя пользователя и пароль не опознаны
...
Рейтинг: 0 / 0
20.06.2013, 11:42
    #38304429
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск файла от имени администратора
Петрова Елена, вероятно у вас домен и надо свойству Domain его имя присвоить.
...
Рейтинг: 0 / 0
20.06.2013, 11:45
    #38304442
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск файла от имени администратора
а если тут
Код: c#
1.
myProc.StartInfo.Password = ReadPassword("введен пароль админа");


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


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


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


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