Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Добавление программы в реестр [D7, WinXP]


Antonmm ©   (2004-07-30 21:44:00) 

Как добавить свою программу в реестр?


GuAV   (2004-07-31 20:50:00) [1]

>ЮрийК ©   (31.07.04 20:45) [11]

Имхо, Вас тоже касается вопрос
Anatoly Podgoretsky ©   (31.07.04 12:07) [7]


ЮрийК   (2004-07-31 20:45:00) [2]

"А кому это нужно? В смысле, зачем запускать её? Добавили - и ладно."
А если это использовать как-то в целях защиты основной программы, которая на диске? Например.
Можно основной программой прочесть и запустить. Как только запустить? Нужны детали.


GuAV   (2004-07-31 20:33:00) [3]


> Далее, как запускать такую программу - из реестра?

А кому это нужно? В смысле, зачем запускать её? Добавили - и ладно.


ЮрийК   (2004-07-31 20:21:00) [4]

"Если бы меня не ломало, то и я проявил бы интеллект и написал, как все же засунуть программу в реестр, в бинарный параметр, целиком."

Далее, как запускать такую программу - из реестра?


GuAV   (2004-07-31 19:30:00) [5]


> Полностью согласен с Antonmm

С чем же именно?

> Что тебе известно про извращения?

procedure TMyFileTime.GetSetTime(SetTime: Boolean);
const
 TimeProc: array[Boolean] of
   function(hFile: THandle; lpCreationTime, lpLastAccessTime,
   lpLastWriteTime: PFileTime): BOOL; stdcall
   = (GetFileTime, SetFileTime);
var h: THandle;
begin
 h:=CreateFile(PChar(Name), GENERIC_READ or $100,
   FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
 if h=INVALID_HANDLE_VALUE then RaiseLastOSError;
 try
   if not TimeProc[SetTime]
     (h, @FTime[1], @FTime[2], @FTime[3]) then
     RaiseLastOSError;
 finally
   CloseHandle(h);
 end;
end;

=====================================

function GetLibString(const Lib: PChar;
 ID: LongWord; Size: Integer): string;
var hDll: THandle;
begin
 hDll := LoadLibrary(Lib);
 if hDll=0 then RaiseLastOSError;
 try
   SetLength(Result, Size);
   SetLength(Result, LoadString(hDll, ID, @Result[1], Size));
 finally
   FreeLibrary(hDll);
 end;
end;

procedure CheckFileName(const S: string);
const D='\/:*?"<>|';
var I: Integer;
begin
for I:=1 to Length(D) do
  if StrScan(PChar(S), D[I])<>nil then
    raise Exception.Create(GetLibString(shell32, 4109, 128));
end;

===================================

procedure Couple(C: array of TComponent);
var I: Integer;
begin
 Assert(Odd(High(C)));
 for I:=0 to High(C) do
   C[I].Tag:=Longint(C[I xor 1]);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var I: Integer;
begin
 ...
 Couple([btnAddFile, FilenameEdit, btnAddFolder, DirectoryEdit]);
 ...
end;

procedure TfrmMain.btnAddFileFolderClick(Sender: TObject);
begin
 AddSome(TFilenameEdit(TComponent(Sender).Tag).FileName);
end;

procedure TfrmMain.FilenameEditChange(Sender: TObject);
begin
 with TEdit(Sender) do TButton(Tag).Enabled:=Text<>'';
end;

Хватит ? :)


Anatoly Podgoretsky   (2004-07-31 12:07:00) [6]

GuAV ©   (30.07.04 23:55) [5]
Что тебе известно про извращения?


Кириешки   (2004-07-31 09:54:00) [7]

>GuAV ©   (30.07.04 23:55) [5]
> Это добавит не программу, а путь к исполнимому файлу к программе.
Кириешки ©   (30.07.04 22:11) [2]

Полностью согласен с Antonmm

А чтоба добавить ключи и параметры нада сделать типа так


GuAV   (2004-07-30 23:55:00) [8]

Кириешки ©   (30.07.04 22:11) [2]
Это добавит не программу, а путь к исполнимому файлу к программе.
olookin ©   (30.07.04 22:28) [3]
Гениально. А я не понял вопрос :) Всё же имхо выражатся надо было бы яснее.
Dok_3D ©   (30.07.04 23:17) [4]
А это делается. Но лишено всякого смысла.


Dok_3D   (2004-07-30 23:17:00) [9]

Если бы меня не ломало, то и я проявил бы интеллект и написал, как все же засунуть программу в реестр, в бинарный параметр, целиком. И ответил бы на вопрос автора.
Но увы :)


olookin   (2004-07-30 22:28:00) [10]

Вот как добавить расширения и Открыть с помощью

procedure PutDataToRegistry(FileList,AllFileList: array of Ansistring;
         IconIndex: array of integer);
var Reg: TRegistry;
   i,j: integer;
   s: string;
begin
 Wait.Operation(0,Length(AllFileList),
 'Registry updating. Please, wait...',''); Reg:=TRegistry.Create;
 with Reg do begin RootKey:=HKEY_LOCAL_MACHINE; LazyWrite:=False;
 for i:=0 to Length(AllFileList)-1 do begin
 Wait.GaugeStatus; s:='\Software\Classes\';
 if KeyExists(s+'.'+AllFileList[i]) then
 DeleteKey(s+'.'+AllFileList[i]); s:=s+'your prog '+AllFileList[i]+'file';
 if KeyExists(s) then begin DeleteKey(s+'\DefaultIcon');
 DeleteKey(s+'\Shell'); DeleteKey(s+'\Shell\open');
 DeleteKey(s+'\Shell\open\command');
 DeleteKey(s+'\Shell\Run with your prog\');
 DeleteKey(s+'\Shell\Run with your prog\command'); DeleteKey(s); end;
 for j:=0 to Length(FileList)-1 do
 if FileList[j]=AllFileList[i] then begin
 s:='\Software\Classes\'; OpenKey(s+'.'+FileList[j],true);
 WriteString('','your prog '+FileList[j]+'file'); CloseKey;
 s:=s+'your prog '+FileList[j]+'file'; OpenKey(s+'\DefaultIcon',true);
 WriteString('',Application.ExeName+','+IntToStr(IconIndex[j])); CloseKey;
 OpenKey(s+'\Shell\open\command',true);
 WriteString('',Application.ExeName+' %1'); CloseKey;
 OpenKey(s+'\Shell\Run with your prog\command',true);
 WriteString('','"'+Application.ExeName+'" "%1"'); CloseKey;
 break; end; end; Free; end; Wait.Operation(1,0,'','');
end;


Кириешки   (2004-07-30 22:11:00) [11]

Полностью согласен с Antonmm

А чтоба добавить ключи и параметры нада сделать типа так

Uses Registry

procedure TForm1.Dobavlenie_V_Reestr;
var
reg : tregistry;
begin
 REG := TRegistry.Create;
 REG.RootKey := //Раздел реестра например HKEY_LOCAL_MACHINE;
 REG.OpenKey('Тута нада написать адрес куда дабавляется праграмма',true);
 REG.WriteString('Название праграммы',  Application.exename);
 REG.CloseKey;
 REG.Destroy;
end;

Прастите за бизграматность.


GuAV   (2004-07-30 21:46:00) [12]

В реестр добавляют не программы, а ключи и параметры. Используй TRegistry.


Наверх

Титульная страница Поиск, карта сайта Написать письмо