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

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

Как определить HDD программы из под гостя? [D6, WinXP]


Страницы:   1 2

AllDontFire ©   (2008-06-04 02:46:00) 

Привет Всем!

Как определить с какого жёсткого диска запущена программа из под   юзера с ограниченными правами (Гость, например) ?

Спасибо.


Anatoly Podgoretsky   (2008-06-04 23:46:00) [21]

> Игорь Шевченко  (04.06.2008 23:43:16)  [16]

> Нет, это не RAID, разделы двух дисков смонтированы на один логический

SPAN?


Игорь Шевченко   (2008-06-04 23:43:00) [22]

AllDontFire   (04.06.08 22:49) [14]


> Не знал что такое бывает, но в любом случае, какой-то из
> двух HDD будет первым, его модель можно взять за результат.
>  А вобще интересно, как такое реализовывается, это не RAID
> случайно?


Нет, это не RAID, разделы двух дисков смонтированы на один логический, но в разные каталоги.

Anatoly Podgoretsky ©   (04.06.08 23:31) [15]


> У меня под буквой С восемь дисков. Но при запуске с них
> программы никакой буквы нет.


У меня разделы двух дисков. Но буква есть :)


Anatoly Podgoretsky   (2008-06-04 23:31:00) [23]

> Игорь Шевченко  (04.06.2008 22:25:13)  [13]

У меня под буквой С восемь дисков. Но при запуске с них программы никакой буквы нет.


AllDontFire   (2008-06-04 22:49:00) [24]

Не знал что такое бывает, но в любом случае, какой-то из двух HDD будет первым, его модель можно взять за результат. А вобще интересно, как такое реализовывается, это не RAID случайно?


Игорь Шевченко   (2008-06-04 22:25:00) [25]


> Мне нужно определить модель жёсткого диска (HDD) или его
> физический номер в системе как PhysicalDrive%d


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


AllDontFire   (2008-06-04 21:37:00) [26]

В DeviceIOControl используется команда IOCTL_DISK_GET_DRIVE_LAYOUT для получения списка партиций(лог. разделов).
read access это GENERIC_READ.

Если открыть хендл CreateFile через READ_CONTROL и/или  FILE_READ_ATTRIBUTES, последующий DeviceIOControl выдаст Access denied.

Для получения "Layout" нужен FILE_READ_EA [extended file attributes], но под гостём он уже запрещён в CreateFile.


LightRipple   (2008-06-04 15:29:00) [27]

> [10] AllDontFire   (04.06.08 14:56)
> LightRipple, да можно открыть с уровнем доступа 0

Слава богу ! А то уж я (после [8] guav © ) пости распрощалась с утренним кофе :)

По САБЖУ: Какие именно команды ты используешь в DeviceIOControl и что именно ты хочешь получить ?
Их (этих команд) много, возможно проскочит замена одной на другую.
И еще: read access - это слишком много (если я правильно поняла, что это за доступ),
поиграй с различными вариантами READ_CONTROL, FILE_READ_ATTRIBUTES и т.п.


AllDontFire   (2008-06-04 14:56:00) [28]

LightRipple, да можно открыть с уровнем доступа 0 Specifies device query access to the object (dwShareMode : FILE_SHARE_READ or FILE_SHARE_WRITE), но дальнейшие обращения к DeviceIOControl для получения партиций работать не будут. Нужен именно read access, как я понял.


Anatoly Podgoretsky   (2008-06-04 14:23:00) [29]

> 2) поиск в строке результата первого символа ":" и замена его нулевым байтом.

Высоко будет твое удивление когда данного символа не будет найдено.


guav   (2008-06-04 13:39:00) [30]

Под гостем даже \\.\C: не откроется.


LightRipple   (2008-06-04 13:20:00) [31]

> [4] AllDontFire   (04.06.08 11:32)
> Мне нужно определить модель жёсткого диска (HDD) или его физический номер в системе как PhysicalDrive%d.
> А под гостём CreateFile(Pchar('\\.\PhysicalDrive'+inttostr(id)),.. выдаёт Access denied.

Не могу проверить - нет Delphi под рукой,
но готова отказаться от утренней чашки кофе, если это так :)

IMHO либо не тот уровень доступа просишь, либо не так "расшариваешь".


AllDontFire   (2008-06-04 12:47:00) [32]

А через "Scsi%d:" или что нибудь типа "QueryDosDevice" или "NtQuerySystemInformation"? чтобы уйти от обращения к PhysicalDrive%d


Игорь Шевченко   (2008-06-04 12:12:00) [33]


> Мне нужно определить модель жёсткого диска (HDD) или его
> физический номер в системе как PhysicalDrive%d. А под гостём
> CreateFile(Pchar('\\.\PhysicalDrive'+inttostr(id)),.. выдаёт
> Access denied. В этом и проблема.


значит нельзя


AllDontFire   (2008-06-04 11:32:00) [34]

Мне нужно определить модель жёсткого диска (HDD) или его физический номер в системе как PhysicalDrive%d. А под гостём CreateFile(Pchar('\\.\PhysicalDrive'+inttostr(id)),..выдаёт Access denied. В этом и проблема.


Renegat   (2008-06-04 10:54:00) [35]

блин. А вместо 2-го - Copy/Delete.


Renegat   (2008-06-04 10:53:00) [36]

Впрочем, вместо пункта 1 сойдёт и обычный ParamStr(0).


Renegat   (2008-06-04 10:52:00) [37]

1) вызов GetModuleFilename с парамом 0.
2) поиск в строке результата первого символа ":" и замена его нулевым байтом.


Страницы:   1 2

Наверх

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