Консультация № 146734
10.10.2008, 17:22
0.00 руб.
11.10.2008, 04:44
0 2 1
Здравствуйте! У меня такая проблема. Нужно запустить определенную программу под ограниченной учетной записью с правами администратора. Так просто программа не запускается. Можно только запустить с правами админа. Можно ли это как нибудь сделать программно?

Обсуждение

Неизвестный
10.10.2008, 20:29
общий
В свойствах ярлыка, по нажатию на кнопку "Дополнительно" Вы можете запускать программу из-под ограниченной учетной записи, используя другие учетные данные. Посатвив галочку и указав данные администратора, Вы сможете запустить программу.
давно
Мастер-Эксперт
425
4118
11.10.2008, 04:42
общий
это ответ
Здравствуйте, Балаклиец Антон Владимирович!
Можно, отчего же нельзя. Главное, чтобы Вы знали пароль Администратора.
Можно пойти двумя путями:
1. Использовать стандартное средство Windows, такое как runas
Код:
Uses ..., ShellAPI;
...
ShellExecute(0, 'open', 'runas', '/u:Администратор Ваша_программа', NIL, SW_SHOW);

При этом в появившемся окне консоли нужно будет ввести пароль Администратора, от имени которого запускается программа.
2. Можно воспользоваться функцией WinAPI CreateProcessWithLogonW(), которая создаёт процесс от имени какого-либо пользователя
Код:
function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: PWideChar;
dwLogonFlags: DWORD; lpApplicationName: PWideChar; lpCommandLine: PWideChar;
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: PWideChar;
const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall; external 'advapi32.dll' name 'CreateProcessWithLogonW';



function RunMyProg(myprog: PWideChar): boolean;
Var
si: TSTARTUPINFO;
pif: PROCESS_INFORMATION;
Begin
si.cb := SizeOf(tstartupinfo);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_SHOWDEFAULT;
si.lpReserved := nil;
si.lpDesktop := nil;
si.lpTitle := nil;
result:=CreateProcessWithLogonW('Администратор', nil, 'Пароль_Администратора', 0, nil, myprog, 0, nil, nil, si, pif);
end;

Второй способ небезопасен, т.к. пароль будет зашит в Вашей программе в открытом виде и любой коварный злодеище сможет его увидеть, открыв экзешник в текстовом редакторе.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа