HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #3471  
Старый 01.05.2009, 12:33
Stil Free
Познающий
Регистрация: 20.12.2008
Сообщений: 46
Провел на форуме:
123070

Репутация: 9
По умолчанию

Цитата:
Сообщение от diznt  
PHP код:
procedure TForm1.Button1Click(SenderTObject);
var
 
reg:TRegistry;
begin
 reg
:=TRegistry.create;
 
reg.RootKey:=HKEY_CURRENT_USER;
 
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run\', true);
 if reg.KeyExists('
my_key_name') then
  begin
   exit;
  end
 else
  begin
   reg.WriteString('
my_key_name','"c:\1.exe"');
  end;
end; 
а вообще в гугле введи, "Работа с реестром delphi"
там будет этого добра навалом и быстро освоишься с реестром так как с ним легко работать в делфи

//пробелы убрать в коде
Да всё я искал там нифига нет того что я ищу,
Код HTML:
if reg.KeyExists('my_key_name')
мне нужно что то другое что проверяет есть ли ключ если он есть то делает определёные дейтвия если нет то делает другие действия...

Последний раз редактировалось Stil Free; 01.05.2009 в 12:35.. Причина: 1
 
Ответить с цитированием

  #3472  
Старый 01.05.2009, 13:15
diznt
Постоянный
Регистрация: 31.01.2008
Сообщений: 643
Провел на форуме:
6128108

Репутация: 445


По умолчанию

Stil Free что значит нужно что-то другое нужно?
ты имеешь другая функция проверки? или что?
Если другая функция проверки то токо на WinApi это можно сделать то есть пишешь свою функцию
 
Ответить с цитированием

  #3473  
Старый 01.05.2009, 16:30
diznt
Постоянный
Регистрация: 31.01.2008
Сообщений: 643
Провел на форуме:
6128108

Репутация: 445


По умолчанию

Как вывести все доступные жесткие диски?
 
Ответить с цитированием

  #3474  
Старый 01.05.2009, 16:49
Stil Free
Познающий
Регистрация: 20.12.2008
Сообщений: 46
Провел на форуме:
123070

Репутация: 9
По умолчанию

Тот метод который ты дал не определяет ничего.... сам незнаю почему вроде как если ключ существует то определяет труе ,вот код.
PHP код:
 function KeyExists(const KeyString): Boolean;  begin 
 KeyExists
('HKEY_LOCAL_MACHINE\SOFTWARE\11111\'); 
 result:=open;  
end;        

procedure TfrmMain.FormCreate(Sender: TObject);  begin  
UINNickList := TList.Create;  
if open=true then  
begin  
button1.Enabled:=true; 
 CheckBox1.Enabled:=True;  
end 
else
 Button3.Visible:=true;  
end; 

Последний раз редактировалось Stil Free; 01.05.2009 в 17:13..
 
Ответить с цитированием

  #3475  
Старый 01.05.2009, 17:13
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
Как вывести все доступные жесткие диски?
если только для списка жестких дисков то вот код.
PHP код:
procedure TForm1.Button1Click(SenderTObject);
 const
   
DRIVE_UNKNOWN 0;
   
DRIVE_NO_ROOT_DIR 1;
   
DRIVE_REMOVABLE 2;
   
DRIVE_FIXED 3;
   
DRIVE_REMOTE 4;
   
DRIVE_CDROM 5;
   
DRIVE_RAMDISK 6;
 var
   
rLongWord;
   
Drives: array[0..128of char;
   
pDrivePChar;
 
begin
   r 
:= GetLogicalDriveStrings(SizeOf(Drives), Drives);
   if 
0 then Exit;
   if 
SizeOf(Drivesthen
     raise Exception
.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
   
pDrive := Drives;
   while 
pDrive^ <> #0 do
   
begin
     
if GetDriveType(pDrive) = DRIVE_FIXED then
       Form1
.ComboBox1.Items.Add(pDrive);
     
Inc(pDrive4);
   
end;
 
end

а если всех носителей то вот:

PHP код:
procedure TForm1.Button1Click(SenderTObject);
var
  
ldDWORD;
  
iinteger;
begin
  ld 
:= GetLogicalDrives;
  for 
:= 0 to 25 do
  
begin
    
if (ld and (1 shl i)) <> 0 then
      Memo1
.Lines.Add(Char(Ord('A') + i) + ':\');
  end;
end; 
 
Ответить с цитированием

  #3476  
Старый 01.05.2009, 17:38
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
Сообщение от Stil Free  
Парни нужно добавить ключ в реестр , а потом при запуске программы проверять его как это сделать?
Создать подраздел в реестре:

RegCreateKey (Key:HKey; SubKey: PChar; var Result: HKey): Longint;
_____ Key - указывает на "корневой" раздел реестра, в Delphi1 доступен только один - HKEY_CLASSES_ROOT, а в Delphi3 - все.
_____ SubKey - имя раздела - строится по принципу пути к файлу в DOS (пример subkey1\subkey2\ ...). Если такой раздел уже существует, то он открывается.
_____ В любом случае при успешном вызове Result содержит Handle на раздел.
_____ Об успешности вызова судят по возвращаемому значению, если ERROR_SUCCESS, то успешно, если иное - ошибка.

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

Открыть подраздел:

RegOpenKey(Key: HKey; SubKey: PChar; var Result: HKey): Longint;

_____ Раздел Key
_____ Подраздел SubKey
_____ Возвращает Handle на подраздел в переменной Result. Если раздела с таким именем нет, то он не создается.
_____ Возврат - код ошибки или ERROR_SUCCESS, если успешно.

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

Закрывает раздел:

RegCloseKey(Key: HKey): Longint;

_____ Закрывает раздел, на который ссылается Key.
_____ Возврат - код ошибки или ERROR_SUCCESS, если успешно.

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

Удалить подраздел:

RegDeleteKey(Key: HKey; SubKey: PChar): Longint;

_____ Удалить подраздел Key\SubKey.
_____ Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

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

Получить имена всех подразделов раздела Key:

RegEnumKey(Key:HKey; index: Longint; Buffer: PChar; cb: Longint): Longint;

_____ Key - Handle на открытый или созданный раздел
_____ Buffer - указатель на буфер
_____ cb - размер буфера
_____ index - индекс, должен быть равен 0 при первом вызове RegEnumKey. Типичное использование - в цикле While, где index увеличивается до тех пор, пока очередной вызов RegEnumKey не завершится ошибкой

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

Возвращает текстовую строку, связанную с ключом Key\SubKey:

RegQueryValue(Key: HKey; SubKey: PChar; Value: PChar; var cb: Longint): Longint;

_____ Ключ\подключ Key\SubKey.
_____ Value - буфер для строки
_____ cb - размер, на входе - размер буфера, на выходе - длина возвращаемой строки.
_____ Возврат - код ошибки.

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

Задать новое значение ключу Key\SubKey:

RegSetValue(Key: HKey; SubKey: PChar; ValType: Longint; Value: PChar; cb: Longint): Longint;

_____ Ключ\подключ Key\SubKey.
_____ ValType - тип задаваемой переменной,
_____ Value - буфер для переменной
_____ cb - размер буфера. В Windows 3.1 допустимо только Value=REG_SZ.
_____ Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

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

Удаляет значение lpValueName находящееся в ключе hKey:

RegDeleteValue(HKEY hKey, LPCTSTR lpValueName);

_____ hKey - ключ. hKey должен был быть открыт с доступом KEY_SET_VALUE процедурой RegOpenKey.
_____ lpValueName - значение, находящееся в ключе hKey.
_____ Возвращает ERROR_SUCCESS если успешно.

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

Выдает список значений у ключа hKey:

LONG RegEnumValue( HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);

_____ hKey - ключ.
_____ dwIndex - этот параметр должен быть 0 при первом вызове, а далее по анологии с RegEnumKey (т.е. можно использовать в цикле),
_____ lpValueName - буфер для названия значения
_____ lpcbValueName - размер lpValueName
_____ lpReserved должно быть всегда 0
_____ lpType - буфер для названия типа (int)
_____ lpData - буфер для данных
_____ lpcbData-размер для lpData

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


Примечание:
При каждой новом вызове функции после предыдущего нужно заново переназначить lpcbValueName.


lpcbValueName = sizeof(lpValueName)
 
Ответить с цитированием

  #3477  
Старый 02.05.2009, 05:05
Stil Free
Познающий
Регистрация: 20.12.2008
Сообщений: 46
Провел на форуме:
123070

Репутация: 9
По умолчанию

Цитата:
Сообщение от Flame of Soul  
Создать подраздел в реестре:

RegCreateKey (Key:HKey; SubKey: PChar; var Result: HKey): Longint;
_____ Key - указывает на "корневой" раздел реестра, в Delphi1 доступен только один - HKEY_CLASSES_ROOT, а в Delphi3 - все.
_____ SubKey - имя раздела - строится по принципу пути к файлу в DOS (пример subkey1\subkey2\ ...). Если такой раздел уже существует, то он открывается.
_____ В любом случае при успешном вызове Result содержит Handle на раздел.
_____ Об успешности вызова судят по возвращаемому значению, если ERROR_SUCCESS, то успешно, если иное - ошибка.

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

Открыть подраздел:

RegOpenKey(Key: HKey; SubKey: PChar; var Result: HKey): Longint;

_____ Раздел Key
_____ Подраздел SubKey
_____ Возвращает Handle на подраздел в переменной Result. Если раздела с таким именем нет, то он не создается.
_____ Возврат - код ошибки или ERROR_SUCCESS, если успешно.

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

Закрывает раздел:

RegCloseKey(Key: HKey): Longint;

_____ Закрывает раздел, на который ссылается Key.
_____ Возврат - код ошибки или ERROR_SUCCESS, если успешно.

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

Удалить подраздел:

RegDeleteKey(Key: HKey; SubKey: PChar): Longint;

_____ Удалить подраздел Key\SubKey.
_____ Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

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

Получить имена всех подразделов раздела Key:

RegEnumKey(Key:HKey; index: Longint; Buffer: PChar; cb: Longint): Longint;

_____ Key - Handle на открытый или созданный раздел
_____ Buffer - указатель на буфер
_____ cb - размер буфера
_____ index - индекс, должен быть равен 0 при первом вызове RegEnumKey. Типичное использование - в цикле While, где index увеличивается до тех пор, пока очередной вызов RegEnumKey не завершится ошибкой

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

Возвращает текстовую строку, связанную с ключом Key\SubKey:

RegQueryValue(Key: HKey; SubKey: PChar; Value: PChar; var cb: Longint): Longint;

_____ Ключ\подключ Key\SubKey.
_____ Value - буфер для строки
_____ cb - размер, на входе - размер буфера, на выходе - длина возвращаемой строки.
_____ Возврат - код ошибки.

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

Задать новое значение ключу Key\SubKey:

RegSetValue(Key: HKey; SubKey: PChar; ValType: Longint; Value: PChar; cb: Longint): Longint;

_____ Ключ\подключ Key\SubKey.
_____ ValType - тип задаваемой переменной,
_____ Value - буфер для переменной
_____ cb - размер буфера. В Windows 3.1 допустимо только Value=REG_SZ.
_____ Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

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

Удаляет значение lpValueName находящееся в ключе hKey:

RegDeleteValue(HKEY hKey, LPCTSTR lpValueName);

_____ hKey - ключ. hKey должен был быть открыт с доступом KEY_SET_VALUE процедурой RegOpenKey.
_____ lpValueName - значение, находящееся в ключе hKey.
_____ Возвращает ERROR_SUCCESS если успешно.

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

Выдает список значений у ключа hKey:

LONG RegEnumValue( HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);

_____ hKey - ключ.
_____ dwIndex - этот параметр должен быть 0 при первом вызове, а далее по анологии с RegEnumKey (т.е. можно использовать в цикле),
_____ lpValueName - буфер для названия значения
_____ lpcbValueName - размер lpValueName
_____ lpReserved должно быть всегда 0
_____ lpType - буфер для названия типа (int)
_____ lpData - буфер для данных
_____ lpcbData-размер для lpData

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


Примечание:
При каждой новом вызове функции после предыдущего нужно заново переназначить lpcbValueName.


lpcbValueName = sizeof(lpValueName)
Мне этого хлама в нете хватает, мне нужен пример проверки я выше оставил ео подправить...
 
Ответить с цитированием

  #3478  
Старый 02.05.2009, 06:11
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
Мне этого хлама в нете хватает, мне нужен пример проверки я выше оставил ео подправить...
видимо потому что для Вас это хлам, Вы позволяете себе такое множество ошибок:

HKEY_LOCAL_MACHINESOFTWARE11111 - не является типом HKEY и не может быть использовано.
UINNickList := TList.Create; - неописанная переменная UINNickList
if open=true then ... - каком основании Вы сравниваете возвращаемое значение функции??? а не саму функцию с указанными параметрами?
result:=open; - на каком основании Вы возвращаете какое-то ореn, когда у Вас в функции указан Boolean для возвращаемого значения?

PS: не относитесь к хорошей информации как к хламу, я искринне желаю Вам успехов в дальнейшей работе с реестром.

Рабочий код:


PHP код:
function LastPos(NeedleCharHaystackstring): integer;
begin
  
for Result := Length(Haystackdownto 1 do
    if 
Haystack[Result] = Needle then
      
Break;
end;

function 
RegKeyExists(RKHKEYNamestring): boolean;
var
  
SKstring;
  
ninteger;
  
hTempHKEY;
begin
  Result 
:= False;
  
:= LastPos('\', Name); //'
  
if 0 then
  begin
    SK 
:= Copy(Name11);
    if 
RegOpenKeyEx(RKPChar(SK), 0KEY_READhTemp) = ERROR_SUCCESS
      then
    begin
      Result 
:= True;
      
RegCloseKey(hTemp);
    
end;
  
end;
end;

procedure TForm1.Button1Click(SenderTObject);
begin
  
// 'SOFTWARE\Alawar\6462\' - обратите внимание на символ \
  //  его нет в начале но он обязателен на конце
  
if RegKeyExists(HKEY_LOCAL_MACHINE,'SOFTWARE\Alawar\6462\')=true //'
  
then
  begin
  
//...если существует
  
ShowMessage('true'); //'
  
end
  
else
  
begin
  
//...если не существует
  
ShowMessage('false'); //'
  
end;
end
 
Ответить с цитированием

  #3479  
Старый 02.05.2009, 09:27
Stil Free
Познающий
Регистрация: 20.12.2008
Сообщений: 46
Провел на форуме:
123070

Репутация: 9
По умолчанию

Цитата:
Сообщение от Flame of Soul  
[B]видимо потому что для Вас это хлам, Вы позволяете себе такое множество ошибок:

[SIZE=1]HKEY_LOCAL_MACHINESOFTWARE11111 - не является типом HKEY и не может быть использовано.
это я когда код добавлял потёр случайно..
Цитата:
Сообщение от Flame of Soul  
UINNickList := TList.Create; - неописанная переменная UINNickList
Это левое используется в самой проге и описано в корне....
Цитата:
Сообщение от Flame of Soul  
if open=true then ...[COLOR=YellowGreen] - каком основании Вы сравниваете возвращаемое значение функции??? а не саму функцию с указанными параметрами?
open описана как boolean, после завершения операции если ключ существует то присваивается true ,а результат операции я присваиваю к open .... Ну помоему здесь весь косяк....

Спасибо я разобрался)

Последний раз редактировалось Stil Free; 02.05.2009 в 09:48..
 
Ответить с цитированием

  #3480  
Старый 03.05.2009, 11:54
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


Отправить сообщение для НTL с помощью ICQ
По умолчанию

Как можно при открытии Form2 забрать значение из Form1
Чтобы: Form2.Label2.Caption = Form1.Edit1.Text
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ