Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск от имени администратора Win 7 
:(
    Опции темы
lollollollol
Дата 7.5.2013, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Добрый вечер. Не могу запустить на Win 7 не могу запустить программу от имени администратора.

Когда правой кнопкой нажимаете, есть Запуск от имени админа. 

Вот как запустить с админ правами программно? пока получилось лишь вызвать окно свойства, и эмуляцией нажатия клавишь, но это как-то криво.

Перешарил все коды инета, у меня вообще ругается на runas, говорит что незнает такой команды.
PM MAIL   Вверх
Poseidon
Дата 7.5.2013, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(lollollollol @  7.5.2013,  18:57 Найти цитируемый пост)
Перешарил все коды инета, у меня вообще ругается на runas, говорит что незнает такой команды.
Да ладно,первые 5 ссылок яндекса отвечают на твой вопрос. runas - это вообще самопальная функция:
Код

function runas(username, password, command: string): string;
var
  si: tstartupinfo;
  pi: tprocessinformation;
  puser, ppass, pdomain, pprogram: array [0..255] of wchar;
  lasterror: dword;
  resultstring: string;
begin
  zeromemory(@si, sizeof(si));
  si.cb:=sizeof(si);
  zeromemory(@pi, sizeof(pi));
 
  stringtowidechar(username, puser, 255);
  stringtowidechar(password, ppass, 255);
  stringtowidechar('', pdomain, 255);
  stringtowidechar(command, pprogram, 255);
  createprocesswithlogonw(
    puser,
    pdomain,
    ppass,
    1, //logon_with_profile,
    pprogram,
    nil,
    create_default_error_mode or create_new_console or
    create_new_process_group or create_separate_wow_vdm,
    nil,
    nil,
    si,
    pi
    );
  lasterror:=getlasterror;
  case lasterror of
    0: resultstring:='success!';
    86: resultstring:='wrong password';
    1326: resultstring:='wrong username or password';
    1327: resultstring:='logon failure user account restriction';
    1385: resultstring:='logon failure the user has not been granted the requested logon type at this computer.';
    2: resultstring:='file not found';
    5: resultstring:='acced denied'
  else
    resultstring:='error '+inttostr(lasterror);
  end;
  result:=resultstring;
 end;


Вот, изучай: Запуск приложения в Windows 7 с правами администратора



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
lollollollol
Дата 8.5.2013, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Оно всегда пишет что неверный логн или пароль, я пытался так уже.
PM MAIL   Вверх
lollollollol
Дата 8.5.2013, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



 shExecInfo^.lpVerb := 'runas';
Почему не раотает? runas не знакомая команда, а если заменить на open то открывает. но без прав
PM MAIL   Вверх
lollollollol
Дата 8.5.2013, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



    1326: resultstring:='wrong username or password';
непонимаю какое имя нужно этой функции!
Уже всё перепробывал. 
PM MAIL   Вверх
Poseidon
Дата 8.5.2013, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Ты издеваешься? Я же тебе дал направление где искать.

Скачивай unitIsAdmin.pas и добавляей его к проекту. Потом рисуй код:
Код

uses unitIsAdmin, Winapi.ShellAPI;

procedure RunAsAdministrator(const source: string);
var
  shExecInfo: PSHELLEXECUTEINFOW;
begin
  New(shExecInfo);
  with shExecInfo^ do
  begin
    cbSize := sizeof(SHELLEXECUTEINFO);
    fMask := 0;
    Wnd := 0;
    lpVerb := 'runas';
    lpFile := PChar(ExtractFileName(source));
    lpParameters := '';
    lpDirectory := PChar(ExtractFilePath(source));
    nShow := SW_SHOWNORMAL;
    hInstApp := 0;
  end;
  ShellExeCuteex(shExecInfo);
  Dispose(shExecInfo);
  shExecInfo := nil;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not IsUserAnAdmin then
    begin
      RunAsAdministrator(Application.ExeName);
      Application.Terminate;
    end;
end;


Это сообщение отредактировал(а) Poseidon - 8.5.2013, 21:21


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
lollollollol
Дата 9.5.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



lpVerb := 'runas';

я же сказал что комп ругается, не знает он такой команды.
Если тут прописат open, запустит но без прав. А иначе на нессответствие ругается
PM MAIL   Вверх
Akella
Дата 9.5.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



runas это не команда
PM MAIL   Вверх
lollollollol
Дата 9.5.2013, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Впринципе я уже с помощью манифеста сделал, но всё таки не пойму почему с runas не работает
PM MAIL   Вверх
Poseidon
Дата 9.5.2013, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(lollollollol @  9.5.2013,  11:00 Найти цитируемый пост)
я же сказал что комп ругается, не знает он такой команды.
Скинь скрин этой "ругни"



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Dik0n
Дата 9.5.2013, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 11.5.2011

Репутация: 1
Всего: 10



100% - рабочий код, в своем приложении использую.
Код

function RunAsAdmin(hWnd: HWND; const filename, Parameters: string): Boolean;
{
    See Step 3: Redesign for UAC Compatibility (UAC)
    http://msdn.microsoft.com/en-us/library/bb756922.aspx
}
var
    sei: TShellExecuteInfo;
begin
    ZeroMemory(@sei, SizeOf(sei));
    sei.cbSize := SizeOf(TShellExecuteInfo);
    sei.Wnd := hwnd;
    sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
    sei.lpVerb := PChar('runas');
    sei.lpFile := PChar(Filename); // PAnsiChar;
    if parameters <> '' then
     sei.lpParameters := PChar(parameters); // PAnsiChar;
    sei.nShow := SW_SHOWNORMAL; //Integer;

    Result := ShellExecuteEx(@sei);
end;


Это сообщение отредактировал(а) Dik0n - 9.5.2013, 19:44
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
Poseidon
Дата 10.5.2013, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Dik0n, чем он принципиально отличается от того, что привел я? И хотелось бы увидеть использование этой функции, а конкретно обработку ситуации, когда пользователь сам выбирает в контекстном меню "Запуск от имени администратора".


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 10.5.2013, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: нет
Всего: 20



Цитата(Poseidon @  10.5.2013,  00:10 Найти цитируемый пост)
Dik0n, чем он принципиально отличается

А какая разница чем он отличаеися
Пусть сначала "ололо" ответит какую ошибку выдаёт его проект без манифеста.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
lollollollol
Дата 10.5.2013, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Уважаемый northener, ололо здесть если и есть, то вы. Не стоит коверкать ники.

Poseidon, небыло возможности заскринить сразу так как на компе с которого писал нет делфи.
Вот скрин.
user posted image
А если прописать open вместо runas, то нет этого сообщения, но и запуск без прав

Dik0n, а твой код ошибки не выдаёт, но и не запускает.
PM MAIL   Вверх
Poseidon
Дата 10.5.2013, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



lollollollol, пройдись отладчиком и покажи строчку, которая вызывает это сообщение.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.