Re: Определить загрузочный том.
От: padla2k  
Дата: 28.01.05 16:22
Оценка: -1
Ничего если я "по тупому"?? И на Дельфи??
procedure GetEnvironmentStrings(ss: TStrings); 
var 
  ptr: PChar; 
  s: string; 
  Done: boolean; 
begin
  ss.Clear; 
  s := ''; 
  Done := FALSE; 
  ptr := windows.GetEnvironmentStrings; 
  while Done = false do begin 
    if ptr^ = #0 then begin 
      inc(ptr); 
      if ptr^ = #0 then Done := TRUE 
      else ss.Add(s); 
      s := ptr^; 
    end else s := s + ptr^; 
    inc(ptr); 
  end; 
end;


HOMEDRIVE — загрузочный том
(минус — только для 2000/ХР)
... << RSDN@Home 1.1.3 stable >>
Re[2]: Определить загрузочный том.
От: Valerio Россия linkedin.com/in/boronin
Дата: 29.01.05 11:33
Оценка: +1
Здравствуйте, padla2k, Вы писали:

P>HOMEDRIVE — загрузочный том

P>(минус — только для 2000/ХР)
Вы не поняли вопроса, мне кажется.

Спрашивают с какого тома ОС загружена (откуда NTLDR отработал).
А куда переменные окружения указывают — это %SYSTEMROOT% и соотв. где установлена ОС.

Соотв. уже совсем другой том (и даже диск) может быть.

Вообще у МС исторически путаница с понятиями system volume / boot volume.

system volume — том содержащий NTLDR & boot.ini
boot volume — они имеют ввиду том содержащий %systemroot%

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

Короче флаг позволяющий понять с какого disk device была произведена загрузка ОС — это DO_SYSTEM_BOOT_PARTITION, а там уже можно и до буквы диска добраться постепенно.

Насколько я могу судить — из user mode эта информация нигде не торчит и флаг в MSDN и DDK не фигурирует нигде.
Все что торчит — опирается на symbolic link \SystemRoot — а он как я уже написал выше, не помогает.
... << RSDN@Home 1.1.4 beta 4 rev. 302>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Определить загрузочный том.
От: an-52  
Дата: 28.01.05 13:59
Оценка:
Помогите пожалуйста решить следуюшую задачу:

Нужно узнать имя тома с которого была загруженна опреционная система. Обращаю внимание не системный том, а именно загрузочный. Boot indicator не подходит т.к. и загрузочные дискеты и флешки имеют его. Наличие ntldr тоже не походит т.к. может быть подключен винт с утсановленной системой но загрузка с него не произошла. Других вариантов пока не придумал.
Re: Определить загрузочный том.
От: Valerio Россия linkedin.com/in/boronin
Дата: 28.01.05 16:18
Оценка:
Здравствуйте, an-52, Вы писали:

A5>Нужно узнать имя тома с которого была загруженна опреционная система. Обращаю внимание не системный том, а именно загрузочный. Boot indicator не подходит т.к. и загрузочные дискеты и флешки имеют его. Наличие ntldr тоже не походит т.к. может быть подключен винт с утсановленной системой но загрузка с него не произошла. Других вариантов пока не придумал.


короче говоря если решать это с уровня драйверов (не уверен что по другому возможно), то Вам нужно добраться до устройства с флагом
deviceObject->Flags & DO_SYSTEM_BOOT_PARTITION
.

Будет работать начиная с НТ4 точно.
... << RSDN@Home 1.1.4 beta 4 rev. 302>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re: Определить загрузочный том.
От: MShura  
Дата: 29.01.05 14:21
Оценка:
Здравствуйте, an-52, Вы писали:

A5>Помогите пожалуйста решить следуюшую задачу:


A5>Нужно узнать имя тома с которого была загруженна опреционная система. Обращаю внимание не системный том, а именно загрузочный. Boot indicator не подходит т.к. и загрузочные дискеты и флешки имеют его. Наличие ntldr тоже не походит т.к. может быть подключен винт с утсановленной системой но загрузка с него не произошла. Других вариантов пока не придумал.


Может поможет реестр? Может немного не то, но зато из user-mode.

HKLM\System\Setup\SystemPartition



Под NT4 получишь строку вида

\Device\\Harddisk%lu\\Partition%lu



Под Win2K+ строку вида

\Device\HarddiskVolume%lu



Ну а дальше зависит от того, что тебе нужно.
Re[3]: Определить загрузочный том.
От: an-52  
Дата: 29.01.05 14:24
Оценка:
Здравствуйте, Valerio, Вы писали:

V>Здравствуйте, padla2k, Вы писали:


P>>HOMEDRIVE — загрузочный том

P>>(минус — только для 2000/ХР)
V>Вы не поняли вопроса, мне кажется.

V>Спрашивают с какого тома ОС загружена (откуда NTLDR отработал).

V>А куда переменные окружения указывают — это %SYSTEMROOT% и соотв. где установлена ОС.

V>Соотв. уже совсем другой том (и даже диск) может быть.


V>Вообще у МС исторически путаница с понятиями system volume / boot volume.


V>system volume — том содержащий NTLDR & boot.ini

V>boot volume — они имеют ввиду том содержащий %systemroot%

V>Это реально сбивает с толку и мне вообще непонятно как допустили такие термины вообще, ну да теперь уже не изменить положения дел тут.


V>Короче флаг позволяющий понять с какого disk device была произведена загрузка ОС — это DO_SYSTEM_BOOT_PARTITION, а там уже можно и до буквы диска добраться постепенно.


V>Насколько я могу судить — из user mode эта информация нигде не торчит и флаг в MSDN и DDK не фигурирует нигде.

V>Все что торчит — опирается на symbolic link \SystemRoot — а он как я уже написал выше, не помогает.

Спасибо за совет. Попробую сделать через драйвер.
Re: Определить загрузочный том.
От: Pavel Dvorkin Россия  
Дата: 01.02.05 11:09
Оценка:
Здравствуйте, an-52, Вы писали:

A5>Помогите пожалуйста решить следуюшую задачу:


A5>Нужно узнать имя тома с которого была загруженна опреционная система. Обращаю внимание не системный том, а именно загрузочный. Boot indicator не подходит т.к. и загрузочные дискеты и флешки имеют его.


Да, но их тип не DRIVE_FIXED по GetDriveType.

With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
Re[2]: Определить загрузочный том.
От: MShura  
Дата: 01.02.05 11:54
Оценка:
A5>>Нужно узнать имя тома с которого была загруженна опреционная система. Обращаю внимание не системный том, а именно загрузочный. Boot indicator не подходит т.к. и загрузочные дискеты и флешки имеют его.
Для removable media обычно partition table нет. Соответственно понятие Boot indicator бессмысленно.

PD>Да, но их тип не DRIVE_FIXED по GetDriveType.

Boot indicator не подходит и для DRIVE_FIXED, поскольку для дисков с partition table этот флаг можно поменять во время работы OS даже не используя сторонние утилиты.
Re[3]: Определить загрузочный том.
От: Pavel Dvorkin Россия  
Дата: 01.02.05 12:29
Оценка:
Здравствуйте, MShura, Вы писали:

PD>>Да, но их тип не DRIVE_FIXED по GetDriveType.

MS>Boot indicator не подходит и для DRIVE_FIXED, поскольку для дисков с partition table этот флаг можно поменять во время работы OS даже не используя сторонние утилиты.

Формально верно, а по существу настолько маловероятно, что это кто-то сделает, что ИМХО можно пренебречь.

With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.