Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > пароль в программе


Автор: skorpik 6.11.2008, 00:18
Хочу сделать досту к одному из пунктов меню в программе по паролю. Можно ли где-нить хранить пароль в программе, но так, чтобы была возможность его менять?
Т.е. где нужно хранить пароль в программе,чтоб его можно было менять, зная старый пароль? А при открытии вновь программы в другой раз этот пароль стал уже новым?

Автор: Данкинг 6.11.2008, 00:51
В реестре храни...

Автор: AntonN 6.11.2008, 01:14
skorpik, в исполняемом файле хранить данные - плохой способ.
Я бы хранил в зашифрованом файле, хранящемся в CSIDL_APPDATA.

Автор: Darisvet 6.11.2008, 01:32
Можно шифровать и хранить в реестре.

Код

uses Registry;

var
 rif: TRegIniFile;
 temp : string;
begin
 rif := TRegIniFile.Create();
 rif.RootKey := HKEY_LOCAL_MACHINE;
 rif.OpenKey("Software\............", true);
 rif.WriteString(MyCrypt("PASSWORD"));
end;


кажется что то вроде этого, если память не изменяет... 

Автор: skorpik 6.11.2008, 01:43
Через реестр то я знаю, так и делаю. Только вот вдрух Антивирус какой у кого или еще какой защитник - вот что. Думал, может можно как-то в проге хранить. Спасибо за ответы. Считаю тему закрытой.

А вот AntonN что такое CSIDL_APPDATA не знаю. Может подскажешь?

Автор: Poseidon 6.11.2008, 09:27
Цитата(skorpik @  6.11.2008,  01:43 Найти цитируемый пост)
Только вот вдрух Антивирус какой у кого или еще какой защитник - вот что
Враздел Software доступ окрыт всегда. Если кто его блокирует, то это уже не корректность той программы. Но хранить пароль в реестре...

Автор: AntonN 6.11.2008, 11:50
skorpik, это константа, хранится в ShlObj smile
с ее помощью можно узнать путь к папке C:\Documents and Settings\юзер\Application Data
Код

uses ShlObj,ActiveX; 

function SpecialDir(Spec:integer):string;
var Allocator: IMalloc;
  SpecialDir: PItemIdList;
  FBuf: array[0..MAX_PATH] of Char;
begin
  if SHGetMalloc(Allocator) = NOERROR then
  begin
    SHGetSpecialFolderLocation(application.Handle,  spec , SpecialDir);
    SHGetPathFromIDList(SpecialDir, @FBuf[0]);
    Allocator.Free(SpecialDir);
    result:=string(FBuf);
  end;
end;

caption:=SpecialDir(CSIDL_APPDATA);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)