PDA

Показать полную графическую версию : [решено] @BootDir - (активный диск) директория загрузчика windows


semiono
06-03-2010, 03:50
Какой более логичный способ получить переменную @BootDir ?

Я не сразу заметил существующую проблему:
$i = IniRead(@HomeDrive & "\BOOT.INI", "boot loader", "default", "multi(0)disk(0)rdisk(0)partition(1)")

IniWrite(@HomeDrive & "\BOOT.INI", "boot loader", "timeout", "3")
IniWrite(@HomeDrive & "\BOOT.INI", "operating systems", $i, '"ntoskrnl.exe" /fastdetect')

И мне ещё важно то, что скрипт запускается на t12 установки windowsxp, поэтому чтение из реестра может быть и корректно,
но всё же может быть всякие неопределённости.
?

Тут лучшее могло бы быть, найти активный диск (0x80), но средствами au3 это наверное невозможно.
И вообще такая переменная @BootDir не помешала бы наряду с @HomeDir итп.

Creat0R
06-03-2010, 12:54
Предупреждение за нарушение правил форума, пункт 2.7 (http://forum.oszone.net/rules.html#2.7):

В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема).

Переименуйте пожалуйста тему.

semiono
08-03-2010, 22:01
@BootDir - краткость не сестра, как это говориться таланта, удлинил название хотя всем известно как пример, например, @HomeDir
Недостаток автоита в том, что он не покрывает все существующие переменные хотя бы WinXP. Как скриптовый язык он обязан это иметь...

Creat0R
08-03-2010, 23:44
А теперь пояснее, что должна представлять переменная @BootDir? папка системного диска? @HomeDrive тогда.

Тут лучшее могло бы быть, найти активный диск (0x80), но средствами au3 это наверное невозможно. »
Что значит активный диск? диск на котором запущен скрипт? тогда через «StringLeft(@ScriptDir, 2)».

Yashied
09-03-2010, 02:09
Лично я другого способа не знаю.

$BootDir = StringRegExpReplace(RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup', 'BootDir') & '\', '\\+[^\\]*$', '')

semiono
09-03-2010, 03:08
Yashied, спасибо! Я не сразу сообразил где в реестре это посмотреть, да это то что надо!Что значит активный диск? »
Нет! Я имею ввиду диск в "mbr" которго число 80h записанно, смещение не помню...
Программы загрузчики считают такой диск активным. Но это дебри уже, я просто не знал сразу
за что зацепиться, чтоб наверняка было.
папка системного диска? »
Нет. Система может быть установлена на диск D:, а загрузчик ntldr может находиться на диске C:
В первом посте я говорил, что надо изменить BOOT.INI, который всегда находится рядом с NTLDR

Вообще, если два физических диска, то BootDir может быть даже D: если зделать (FDisk) второй диск активным




© OSzone.net 2001-2012