|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание Boot.ini |
|
[решено] Создание Boot.ini
|
Старожил Сообщения: 352 |
Профиль | Отправить PM | Цитировать Добрый день !
Все Вы хорошо знаете файл Boot.ini. Так вот, нужно с помощью AutoIt правильно прописать строку загрузки default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS т.к. система может быть установлена не только на раздел С: и не только на первый жёсткий диск. |
|
Отправлено: 15:34, 31-10-2013 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать IniWrite
Номера дисков = функция _GetDiskNimberForDrive из исходника утилиты http://u.to/WwmMBA |
Отправлено: 21:04, 31-10-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать AZJIO, Спасибо, но пока разбирался почему возвращается пустое значение по вашей ссылке, нашёл :
$sDDriveLetter = "C" $iDiskNumber = _GetDiskNimberForDrive($sDDriveLetter) If @error Then MsgBox(48, "Error", "Error Number " & @error & @CRLF) Else MsgBox(64, "_GetDiskNimberForDrive", "Drive " & StringUpper($sDDriveLetter) & " is on disk #" & $iDiskNumber) EndIf Func _GetDiskNimberForDrive($sDriveLetter) Local $a_hCall = DllCall("kernel32.dll", "hwnd", "CreateFile", _ "str", "\\.\" & $sDriveLetter & ":", _; logical drive "dword", 0, _ "dword", 0, _ "ptr", 0, _ "dword", 3, _; OPEN_EXISTING "dword", 128, _; FILE_ATTRIBUTE_NORMAL "ptr", 0) If @error Then Return SetError(1, 0, -1); your system is very old. Do something. EndIf If $a_hCall[0] = -1 Then Return SetError(2, 0, -1); non-existing drive EndIf Local $hDevice = $a_hCall[0] Local $tIOCTL_STORAGE_GET_DEVICE_NUMBER = DllStructCreate("dword DeviceType;" & _ "dword DeviceNumber;" & _ "int PartitionNumber") Local $a_iCall = DllCall("kernel32.dll", "int", "DeviceIoControl", _ "hwnd", $hDevice, _ "dword", 0x2D1080, _; IOCTL_STORAGE_GET_DEVICE_NUMBER "ptr", 0, _ "dword", 0, _ "ptr", DllStructGetPtr($tIOCTL_STORAGE_GET_DEVICE_NUMBER), _ "dword", DllStructGetSize($tIOCTL_STORAGE_GET_DEVICE_NUMBER), _ "dword*", 0, _ "ptr", 0) If @error Or Not $a_hCall[0] Then DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $hDevice) Return SetError(3, 0, -1); DeviceIoControl failed for some reason EndIf DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $hDevice) ; will write some data ConsoleWrite("Drive " & StringUpper($sDriveLetter) & ": " & @CRLF) ConsoleWrite(@TAB & "DeviceType: " & DllStructGetData($tIOCTL_STORAGE_GET_DEVICE_NUMBER, "DeviceType") & @CRLF) ConsoleWrite(@TAB & "DeviceNumber: " & DllStructGetData($tIOCTL_STORAGE_GET_DEVICE_NUMBER, "DeviceNumber") & @CRLF) ConsoleWrite(@TAB & "PartitionNumber: " & DllStructGetData($tIOCTL_STORAGE_GET_DEVICE_NUMBER, "PartitionNumber") & @CRLF) ConsoleWrite(@CRLF) ; end writing If DllStructGetData($tIOCTL_STORAGE_GET_DEVICE_NUMBER, "DeviceType") = 7 Then; FILE_DEVICE_DISK Return SetError(0, 0, DllStructGetData($tIOCTL_STORAGE_GET_DEVICE_NUMBER, "DeviceNumber")) EndIf Return SetError(4, 0, -1); not a disk partition EndFunc ;==>_GetDiskNimberForDrive |
Отправлено: 10:56, 01-11-2013 | #3 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать -TRM-, пустое значение это массив, номер диска и номер партиции, в вашем примере возвращается номер диска. Разобраться не сложно, функция та же, просто формат и количество возвращаемых данных зависит уже от вашей фантазии. Можно сразу формировать готовую строку внутри функции и даже сразу записать в ini, а можно более правильно, возвратив данных а уже другой функцией формировать. Правильно, это когда функция содержит цельный блок, а не симбиоз нескольких функций, потому что в дальнейшем её не придётся переписывать под несколько иной алгоритм.
|
Отправлено: 12:17, 01-11-2013 | #4 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать AZJIO, Так и сделал, спс.
|
|
Отправлено: 14:59, 01-11-2013 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - [решено] Перемещение или создание файла boot.ini | SVt | Microsoft Windows 2000/XP | 11 | 02-07-2010 12:47 | |
Загрузка - boot.ini | Vampire | Microsoft Windows 2000/XP | 41 | 13-03-2008 11:09 | |
Загрузка - boot.ini | KurtS | Microsoft Windows 2000/XP | 7 | 02-11-2004 19:53 | |
boot.ini | makcum | Хочу все знать | 13 | 12-05-2004 16:50 | |
Boot.ini а может и не Boot | Vovanello | Microsoft Windows 95/98/Me (архив) | 1 | 11-06-2003 07:31 |
|