Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] @BootDir - (активный диск) директория загрузчика windows (http://forum.oszone.net/showthread.php?t=169292)

semiono 06-03-2010 03:50 1362182

@BootDir - (активный диск) директория загрузчика windows
 
Какой более логичный способ получить переменную @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 1362295

Предупреждение за нарушение правил форума, пункт 2.7:

Цитата:

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

semiono 08-03-2010 22:01 1363860

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

Creat0R 08-03-2010 23:44 1363906

А теперь пояснее, что должна представлять переменная @BootDir? папка системного диска? @HomeDrive тогда.

Цитата:

Цитата semiono
Тут лучшее могло бы быть, найти активный диск (0x80), но средствами au3 это наверное невозможно. »

Что значит активный диск? диск на котором запущен скрипт? тогда через «StringLeft(@ScriptDir, 2)».

Yashied 09-03-2010 02:09 1363971

Лично я другого способа не знаю.

Код:

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

semiono 09-03-2010 03:08 1363985

Yashied, спасибо! Я не сразу сообразил где в реестре это посмотреть, да это то что надо!
Цитата:

Цитата Creat0R
Что значит активный диск? »

Нет! Я имею ввиду диск в "mbr" которго число 80h записанно, смещение не помню...
Программы загрузчики считают такой диск активным. Но это дебри уже, я просто не знал сразу
за что зацепиться, чтоб наверняка было.
Цитата:

Цитата Creat0R
папка системного диска? »

Нет. Система может быть установлена на диск D:, а загрузчик ntldr может находиться на диске C:
В первом посте я говорил, что надо изменить BOOT.INI, который всегда находится рядом с NTLDR

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


Время: 07:29.

Время: 07:29.
© OSzone.net 2001-