Страницы

Поиск по вопросам

Показаны сообщения с ярлыком реестр. Показать все сообщения
Показаны сообщения с ярлыком реестр. Показать все сообщения

среда, 22 января 2020 г.

скажите, как можно узнать дату установки драйвера флешки на компьютер

#windows #драйвер #железо #реестр


когда купленная флешка была вставлена в комьютер(гнездо)
началось установка её драйвера на комьютер.

скажите, как можно узнать дату установки драйвера флешки на компьютер
дата\время\год 
    


Ответы

Ответ 1



Дополню. Если необходимая информация о дате отсутствует в файлах, перечисленных Сергеем. То можно выгрузить информацию о создании ветви реестра, связанной с драйвером устройства. Средствами regedit: экспортировать нужную ветвь в txt-файл. В файле будет указано время модификации параметров. Ну и, конечно же, есть отличная бесплатная утилита USBDeview, с помощью которой можно ещё и автоматизировать процесс сбора информации.

Ответ 2



Если это Windows Vista или более поздние, то информацию найдете в C:\Windows\INF\setupapi.dev.log Для Windows XP можно в папке C:\Windows\INF поискать .inf файл установленного драйвера, затем проверить время создания .pnf файла с тем же именем.

пятница, 10 января 2020 г.

Где в реестре Windows указывается браузер по умолчанию?

#windows #браузер #реестр


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

С ассоциациями файлов понятно, их перечислять не надо.
    


Ответы

Ответ 1



Дефолтный бразузер может быть разным для разных протоколов. Ассоциации протоколов работают так же, как ассоциации файлов: HKEY_CLASSES_ROOT\http\shell\open\command где HKEY_CLASSES_ROOT - это результат мержа HKEY_CURRENT_USER\Software\Classes и HKEY_LOCAL_MACHINE\Software\Classes. UP: начиная с висты, ассоциации протоколов пишутся еще и в HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http так что стоит проверять оба варианта. Длинная статья с подробностями: How Does Your Browser Know that It’s Not The Default.

Ответ 2



Включи RegMon, запусти какой нить Chrome и сделай ему set default browser и смотри результат.

воскресенье, 22 декабря 2019 г.

Запись бинарных данных в реестр

#delphi #реестр


Пытаюсь изменить значение реестра типа reg_binary

type
  TBuffer = array[0..11] of byte;
   const InputData:TBuffer=($07,$00,$00,$00,$6F,$2B,$15,$00,$40,$AB,$D3,$01);
var
  Reg: TRegistry;
  InputBuffer: TBuffer;
begin
InputBuffer := InputData;

  Reg := TRegistry.Create();
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('....', True) then
    begin
      Reg.WriteBinaryData('Health',InputBuffer, SizeOf(InputBuffer));//пробовал и
InputBuffer[0]
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;


Пробовал и так :

var
   Data: array of Byte;

....

SetLength(Data, 12);
  Data[0] := $07;
  Data[1] := $00;
  Data[2] := $00;
  Data[3] := $00;
  Data[4] := $6F;
  Data[5] := $2B;
  Data[6] := $15;
  Data[7] := $00;
  Data[8] := $40;
  Data[9] := $AB;
  Data[10] := $D3;
  Data[11] := $01;

  Reg := TRegistry.Create(KEY_SET_VALUE);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('....', True) then
    begin
      Reg.WriteBinaryData('Health',Data, 12); //пробовал и Data[0]
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;


Но изменений никаких нет, написал подобное на c#

    RegistryKey currentUserKey = Registry.LocalMachine;
    RegistryKey helloKey = currentUserKey.OpenSubKey(@"...", true);
    helloKey.SetValue("Health", new byte[] { 07, 00, 00, 00, 0x6F, 0x2B, 15, 00,
40, 0xAB, 0xD3, 01, });
    helloKey.Close();


и значение изменилось. Где я в delphi ошибся ?

п.с от админа запускаю
    


Ответы

Ответ 1



В 64-х битной Windows для 32-х битных приложений есть т.н. виртуализация, из-за которой эти приложения видят свою, 32-х битную версию реестра (Alternate Registry View). Для того, чтобы 32-х битное приложение смогло увидеть системную 64-х битную версию реестра, надо использовать флаг KEY_WOW64_64KEY (0x0100): KEY_WOW64_64KEY Indicates that an application on 64-bit Windows should operate on the 64-bit registry view. This flag is ignored by 32-bit Windows. This flag must be combined using the OR operator with the other flags in this table that either query or access registry values. То есть, нужно делать так: Reg := TRegistry.Create(KEY_WRITE OR KEY_WOW64_64KEY); try ... finally ... end;

понедельник, 15 июля 2019 г.

Как дать полный доступ к записи в реестре для всех пользователей в домене?

Пытаюсь настроить права для всех пользователей в доменной группе на локальной машине. Делаю вроде всё правильно делаю:
Microsoft.Win32.RegistryKey key = Registry.ClassesRoot.CreateSubKey(@"HKEY_CLASSES_ROOT\AxControls.PMFActiveX"); RegistrySecurity rs = new RegistrySecurity(); WindowsIdentity id = WindowsIdentity.GetCurrent(); rs.AddAccessRule(new RegistryAccessRule(new SecurityIdentifier(WellKnownSidType.AccountDomainUsersSid, id.User.AccountDomainSid), RegistryRights.FullControl, AccessControlType.Allow)); key.SetAccessControl(rs);
ошибок в коде нет, но всё равно не работает:

Что я делаю не так?(


Ответ

Registry.ClassesRoot уже открывает ветку HKEY_CLASSES_ROOT. Т.е. повторно писать HKEY_CLASSES_ROOT не нужно.

пятница, 21 июня 2019 г.

Как найти и экспортировать ветки реестра содержащие определенное значение в ключах?

В общем нужно перенести с одного реестра на одном ПК в другой реестр другого ПК такие ветки, которые содержат определенное слово или фразу или предложение и т.д.
Например по фразе "Рамамбахарамамбуру" находит ветку
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Patches\1CB0F51845E7C003A9AC9C64F0FDF687\SourceList\Net
и еще пару-тройку сотен.
Что как и чем сделать так, чтоб можно было эти ветки экспортировать, а на другом ПК импортировать одним файлом?
Нашел программу reg organizer - можно осуществить поиск, высвечиваются все ветки:

но, к сожалению, их можно только удалить)))
Есть ли какие-то такие супер программы с поиском и экспортом конкретных веток? Или как чем такое вообще можно провернуть? Что использовать?


Ответ

Поскребя в интернете по мануалам команд батника сделал такую программку:
@echo OFF
set counter=0 setlocal enableextensions enableDelayedExpansion
set TEMP_FOLDER_DIR=%temp%
egParts set SECTION_LIST=(HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG)
if [%1]==[] (set KEY_NAME=HKLM\SOFTWARE\Classes\Applications) else (set KEY_NAME=%1) if [%2]==[] (set VALUE_NAME="Internet Explorer") else (set VALUE_NAME=%2) if [%3]==[] (set TMP_EXPORT=%TEMP_FOLDER_DIR%) else (set TMP_EXPORT=%3) if [%4]==[] (set DEST_MEEGED_FILE=%userprofile%\desktop) else (set DEST_MEEGED_FILE=%4)
if not exist %TEMP_FOLDER_DIR% mkdir "%TEMP_FOLDER_DIR%"
for /f "usebackq skip=1 tokens=1-2*" %%a in (`reg query %KEY_NAME% /f %VALUE_NAME% /s 2^>nul`) do ( set ValueName=%%a set ValueType=%%b set ValueValue=%%c
set TRUE=
if defined ValueName ( FOR %%G IN %SECTION_LIST% DO ( if not "!ValueName!"=="!ValueName:%%G=!" ( set TRUE=1 ) )
if defined TRUE ( set /a counter=counter+1 echo !counter! - !ValueName! c:\Windows\SysWOW64
eg.exe export !ValueName! "%TMP_EXPORT%\test!counter!.reg" ) ) )
copy /b "%TMP_EXPORT%\*.reg" "%DEST_MEEGED_FILE%\mergedFile.reg" rmdir %TEMP_FOLDER_DIR% /s /q
endlocal pause
где можно передать входные параметры:
1 - раздел где ищем 2 - значение, которое ищем 3 - временная папка для всех найденных веток 4 - финальная папка, где будет хранится общий файл со всеми слитыми кусками usebackq - возможность командного исполнения того, что заключено в обратные кавычки tokens - Задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. В результате "tokens=1-2*" мы получаем название ключа, тип и значение ключа в ветке итерации
По умолчанию при отсутствии какого либо параметра ищет в HKLM\SOFTWARE\Classes\Applications (HKLM - HKEY_LOCAL_MACHINE), строку Internet Explorer, складирует куски в temp директорию, а окончательный результат кладет на рабочий стол

среда, 27 февраля 2019 г.

Где в реестре Windows указывается браузер по умолчанию?

Интересуют все места в реестре, в которых должна быть прописана программа, являющаяся браузером по умолчанию.
С ассоциациями файлов понятно, их перечислять не надо.


Ответ

Дефолтный бразузер может быть разным для разных протоколов.
Ассоциации протоколов работают так же, как ассоциации файлов:
HKEY_CLASSES_ROOT\http\shell\open\command
где HKEY_CLASSES_ROOT - это результат мержа HKEY_CURRENT_USER\Software\Classes и HKEY_LOCAL_MACHINE\Software\Classes
UP: начиная с висты, ассоциации протоколов пишутся еще и в
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http
так что стоит проверять оба варианта.
Длинная статья с подробностями: How Does Your Browser Know that It’s Not The Default.

вторник, 13 ноября 2018 г.

Запись бинарных данных в реестр

Пытаюсь изменить значение реестра типа reg_binary
type TBuffer = array[0..11] of byte; const InputData:TBuffer=($07,$00,$00,$00,$6F,$2B,$15,$00,$40,$AB,$D3,$01); var Reg: TRegistry; InputBuffer: TBuffer; begin InputBuffer := InputData;
Reg := TRegistry.Create(); try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('....', True) then begin Reg.WriteBinaryData('Health',InputBuffer, SizeOf(InputBuffer));//пробовал и InputBuffer[0] Reg.CloseKey; end; finally Reg.Free; end;
Пробовал и так :
var Data: array of Byte;
....
SetLength(Data, 12); Data[0] := $07; Data[1] := $00; Data[2] := $00; Data[3] := $00; Data[4] := $6F; Data[5] := $2B; Data[6] := $15; Data[7] := $00; Data[8] := $40; Data[9] := $AB; Data[10] := $D3; Data[11] := $01;
Reg := TRegistry.Create(KEY_SET_VALUE); try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('....', True) then begin Reg.WriteBinaryData('Health',Data, 12); //пробовал и Data[0] Reg.CloseKey; end; finally Reg.Free; end; end;
Но изменений никаких нет, написал подобное на c#
RegistryKey currentUserKey = Registry.LocalMachine; RegistryKey helloKey = currentUserKey.OpenSubKey(@"...", true); helloKey.SetValue("Health", new byte[] { 07, 00, 00, 00, 0x6F, 0x2B, 15, 00, 40, 0xAB, 0xD3, 01, }); helloKey.Close();
и значение изменилось. Где я в delphi ошибся ?
п.с от админа запускаю


Ответ

В 64-х битной Windows для 32-х битных приложений есть т.н. виртуализация, из-за которой эти приложения видят свою, 32-х битную версию реестра (Alternate Registry View).
Для того, чтобы 32-х битное приложение смогло увидеть системную 64-х битную версию реестра, надо использовать флаг KEY_WOW64_64KEY (0x0100)
KEY_WOW64_64KEY Indicates that an application on 64-bit Windows should operate on the 64-bit registry view. This flag is ignored by 32-bit Windows. This flag must be combined using the OR operator with the other flags in this table that either query or access registry values.
То есть, нужно делать так:
Reg := TRegistry.Create(KEY_WRITE OR KEY_WOW64_64KEY); try ... finally ... end;