Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.11.2010, 01:25
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
Вопрос Помогите с проектом!

Всем привет.
есть одна идея, помогите реализовать.
Начну с сути: есть пару штук ярлыков (lnk, pif). Необходимо перед их запуском потребовать ввода пароля.
Все настройки хранятся в .ini файле, а именно: пароль и запускаемый ярлык.
Если введенный пароль совпал - открой тот ярлык который прописан в ini.
=)
Для открытия ярлыка думаю можно использовать ShellExecute. Но как все связать с ini...
Ответить с цитированием
  #2  
Старый 25.11.2010, 20:40
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

А толку? Что помешает пользователю запустить программу из "Пуск>Все программы..." или прямо с корневой папки программ?

Хотя если очень надо то вроде так:

Код:
var
  Form1: TForm1;
  AppIni: TIniFile;
  pass, programm:String;
implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
AppIni := TIniFile.Create('conf.ini');
pass:=AppIni.ReadString('Pass','pass1','');
programm:=AppIni.ReadString('Prog','prog1','');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If pass=Edit1.Text then shellexecute(programm,...................);
end;

end.

Последний раз редактировалось deltas, 25.11.2010 в 20:58.
Ответить с цитированием
  #3  
Старый 25.11.2010, 23:53
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
По умолчанию

Помешает то что рабочий стол ограничен: пуска нету, запуска командной строки тоже, настроек и всего остального.
Есть только голый рабочий стол.
Жестокие спартанские условия =-))

Спасибо буду пробывать.

Вопрос: как сделать скрытый ввод пароля, т.е. когда ввожу цифоровой пароль - на экране вижу знаки * или #.
Ответить с цитированием
  #4  
Старый 26.11.2010, 00:21
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

В OnCreate формы:
Код:
SendMessage(Edit1.Handle, EM_SETPASSWORDCHAR, Ord('*'), 0);
А в Delphi 2009 для этого есть свойство PasswordChar.
Ответить с цитированием
  #5  
Старый 26.11.2010, 00:24
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А еще из INI-файла можно взять данные через простецкие строки:
Код:
var f:text;
     s:string;
...
assignfile(f,'123.ini');
while not eof(f) do
begin
  readln(f,s);
  <обработка>
end;
closefile(f);
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 26.11.2010, 00:51
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от Gr_Scream
Помешает то что рабочий стол ограничен: пуска нету, запуска командной строки тоже, настроек и всего остального.
Есть только голый рабочий стол.
Жестокие спартанские условия =-))

И CTR+ALT+DEL отключил? Каким образом убрал пуск?
Ответить с цитированием
  #7  
Старый 26.11.2010, 01:06
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

CTRL+ALT+DEL вроде бы неотключаем.
Однако я поступил когда писал блокировщик по-хитрому: при запуске Диспетчера я его отрубаю (защита от диспетчера), прога моя записывается в авторан в реесре (защита от выхода из системы и выключения). А больше там ниче страшного нет.
А пуск убрать - ниче сложного: через hw:=FindWindow(nil,имя Класса) найти панель задач (название класса по инету ходит, сча уж не помню) и ShowWindow(hw,SW_HIDE);
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #8  
Старый 26.11.2010, 01:27
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
По умолчанию

Цитата:
Сообщение от deltas
И CTR+ALT+DEL отключил? Каким образом убрал пуск?
Заменой файла ОС. setshell.exe.... Могу скинуть. Только надо быть предельно аккуратным =)
А еще диспечер выключается reg настройками.
Ответить с цитированием
  #9  
Старый 26.11.2010, 01:44
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В винХР я слышал про рег отрубание. Но в винVista/7 вроде как не пашет.
а вот с момента "замена файла ОС" пожалста поподробнее
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #10  
Старый 26.11.2010, 14:09
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
По умолчанию

Дело в том что на работе все пк под ХП. Поэтому с рег файлами проблем нет)
А файлик - это небольшая программка написанная кем-то. Один файл - он меняет рабочий стол на полностью пустой. Для возврата требуется обратный запуск файла но с другими параметрами.
Вечером (если не забуду) принесу его =)
Ответить с цитированием
  #11  
Старый 26.11.2010, 17:50
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
По умолчанию

Ну вот уже что-то получилось =) ...
ввожу пароль - идет проверка с паролем из ini - совпало: запускаю то что прописано в ini.
При неверном пароле - выдаю сообщение.

Вот еще вопрос: какую процедуру запуска лучше использовать если я точно не уверен какой тип файла будет запущен??? т.е. одна программа dos'вая и запускается через .PIF другая через .lnk третья напрямую через .exe
=)
Ответить с цитированием
  #12  
Старый 26.11.2010, 20:53
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Мб WinExec или Shellчетотам Вроде какая-то функция из них открывает любой файл как будто по нему дважды тыкнули вроде, т.е. по стандарту. Картинку - в просмотрщике, текст - в блокноте и т.д. Хотя не юзал не разу.

А пароль у вас в ИНИ-файле так и прописан? не круто. так чел однажды
залезет в этот ини, посмотрит пароль и все. Лучше имхо хранить хеш (типа s[1]^2-s[2]^3+s[3]^4-s[4]^3+s[5]^2-... или любую другую бредовую формулу) и сравнивать хеши введенного и известный хеш реального пароля. Если алгоритм один, то при верном пароле хеши совпадут. А вот демонтировать хеш назад в пароль очень и очень трудно.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #13  
Старый 27.11.2010, 00:15
Gr_Scream Gr_Scream вне форума
Прохожий
 
Регистрация: 25.11.2010
Сообщения: 21
Репутация: 10
По умолчанию

Для запуска сейчас использую: WinExec(PChar(programm),SW_SHOW);
lnk запустить не смог =(

Вот про пароль я уже думал. Надумал что-то типо:
Function Crypt (Text, Key: String; Encode: Boolean): String;
Var
I, KeyLength: integer;
Sign: ShortInt;
Begin
KeyLength:=Length (Key);
If Encode then Sign:=-1 else Sign:=1;
For I:=1 to Length (Text) do
Text[i]:=Chr (ord (Text[i]) +Sign*ord (Key[I mod KeyLength+1]));
Result:=Text;
End;
...........
кодировать: куда_кодировать:=Crypt(что_кодировать, ключ, false);
если true - вернет обратно.
Ответить с цитированием
  #14  
Старый 27.11.2010, 00:34
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Можно и так. НО хеш все равно надежнее. даже в теории для каждого хеша существует несколько вариантов пароля. Однако шанс, что чел подберет другой пароль с тем же хешом - почти равен нулю. Вытащить пароль из хеша почти нереально: ну есть у тебя число 12345. Что это? 12344+1? 12347-2? не определить. Т.е. кодировка только в одну сторону.

а насчет функций - какой-то там shell* был вроде...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #15  
Старый 27.11.2010, 00:44
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от Gr_Scream
Для запуска сейчас использую: WinExec(PChar(programm),SW_SHOW);
lnk запустить не смог =(
Код:
uses
  ShellAPI;

ShellExecute(Form1.Handle, 'open', 'name.lnk', nil, nil, SW_SHOW);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter