Текущий архив: 2007.07.01;
Скачать: CL | DM;
Вниз
Запрет запуска Найти похожие ветки
← →
Просто зашел (2007-01-23 13:02) [0]Прошу помощи.
Как, (желательно "малой кровью") запретить запуск конкретного приложения пользователю.
Пример:
Есть общедоступный компьютер. Один юзер знает "волшебное слово" и запускает IE. Другой не знает и ему выскакивает ругательная надпись.
Можно ли это реализовать CreateFile(.....) ???
← →
clickmaker © (2007-01-23 13:06) [1]Если NTFS, то права на запуск iexplore.exe разным логинам.
а "волшебным словом" будет этот самый логин и пароль
← →
Просто зашел (2007-01-23 14:10) [2]
> clickmaker © (23.01.07 13:06) [1]
> Если NTFS, то права на запуск iexplore.exe разным логинам.
>
> а "волшебным словом" будет этот самый логин и пароль
NTFS, но логин-пароль один ;)
← →
tesseract © (2007-01-23 14:13) [3]
> NTFS, но логин-пароль один ;)
Сделай два.
← →
Игорь Шевченко © (2007-01-23 16:18) [4]
> Есть общедоступный компьютер. Один юзер знает "волшебное
> слово" и запускает IE. Другой не знает и ему выскакивает
> ругательная надпись.
В реестре создаешь ключ в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options с именем того EXEшника, который надо запускать.
У этого ключа устанавливаешь строковое значение Debugger в котором указываешь путь к запускалке и имя запускалки.
Пишешь собственно запускалку, для теста я написал примерно так:unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
emPassword: TEdit;
Go: TButton;
lbPassword: TLabel;
procedure GoClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.GoClick(Sender: TObject);
var
pi: PROCESS_INFORMATION;
si: STARTUPINFOA;
Result: Boolean;
de: DEBUG_EVENT;
begin
if emPassword.Text = "validpassword" then begin
FillChar(pi,sizeof(pi), 0);
FillChar(si,sizeof(si), 0);
si.cb := sizeof(si);
Result := CreateProcessA(PChar(ParamStr(1)),
PChar(ParamStr(1)), nil, nil,
false, DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS, nil,
nil, si, pi);
if Result then begin
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
while True do begin
WaitForDebugEvent(de, INFINITE);
ContinueDebugEvent(de.dwProcessId, de.dwThreadId,
DBG_CONTINUE);
if de.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT then
Break;
end;
Close;
end else
RaiseLastOSError;
end;
end;
end.
Проверялось это на тестовом же примере, был создан еще один EXEшник, с именем AppTest, был создан ключ в реестре
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\AppTest.EXE, у него параметр Debugger равный C:\BIN\AppDbg.exe.
При запуске AppTest появлялось окошко с предложением ввести пароль и после ввода запускался нужный мне EXEшник.
Удачи.
Код сырой, никакая корректная работа не гарантируется, но в качестве идеи для размышления может и пригодится.
← →
властелин колхоза (2007-01-23 17:10) [5]> [0] Просто зашел (23.01.07 13:02)
Если украинский разумеешь, http://tau-systems.org.ua/personalization.php
ЗЫ. Маленькая самореклама... :-D
← →
властелин колхоза (2007-01-23 17:12) [6]Пардон... Тут http://bik-bak.com/personalization.php на русском.
← →
BiN (2007-01-23 23:56) [7]
> Просто зашел (23.01.07 13:02)
Для таких вещей наряду с контролем NTFS придуманы правила хеша, сертификата или пути.
Страницы: 1 вся ветка
Текущий архив: 2007.07.01;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.032 c