Локальний SATA / SSD диск відображається як знімний носій в Windows

У деяких випадках Windows 10, 8.1 і 7 може розпізнавати внутрішній жорсткий диск (SATA або SSD) як знімний носій. В результаті в системному треї для такого локального диска відображається значок Безпечне видалення пристрою (як у звичайній USB флешки).

Звичайно, ви не зможете отримати на льоту SATA диск, на якому встановлена ​​Windows, але запросто зможете випадково витягти додатковий SATA диск. Ще один недолік таких "Removable" дисків - в Windows 7 не можна було розбити такий жорсткий диск на розділи (в Windows 10 1703 і вище це можливо).

Ця проблема пов'язана з тим, що в Windows за замовчуванням використовує універсальний драйвер як для SATA (внутрішніх), так і для eSATA (зовнішніх) жорстких дисків - Standard SATA AHCI controller. Операційна система при підключенні таких дисків перевіряє підтримку режиму HotPlug (Але диск "на-гарячу"). Даний функціонал завжди підтримується при роботі контролера в режимі AHCI, тому в теорії, підключені в такому режимі SATA диски, завжди повинні відображатися в списку "Безпечне вилучення пристроїв". Однак більшість виробників чіпсетів вбудовують в драйвер своїх пристроїв або додаткове ПО функціонал автоматичного приховування внутрішніх SATA дисків.

Установка драйвера SATA контролера

Якщо у вас внутрішній SATA / SSD диск відображаються в списку безпечного вилучення, швидше за все варто спробувати встановити більш відповідний драйвер. Спробуйте знайти останню версію драйвер контролера жорсткого диска на сайті виробника вашої материнської плати або комп'ютера. Також встановіть рідний драйвер чіпсета, через який підключений ваш жорсткий диск (Intel Rapid, RST and AHCI Driver and GUI, Intel Matrix Storage Manager і т.д.)

Налаштування SATA контролера в BIOS

У деяких версіях BIOS / UEFI в розширених налаштуваннях можливо відключити гаряче підключення (HotSwap або HotPlug) для роз'єму, через який підключається жорсткий диск. Перевірте, чи доступна у вас ця функція. Також можна змінити режим роботи контролера з AHCI на IDE, але ви позбудетеся всіх переваг AHCI.

TreatAsInternalPort: Налаштування режиму роботи SATA дисків через реєстр

для NVIdia контролерів можна відключити безпечне вилучення на внутрішніх дисках через реєстр. Перейдіть в гілку реєстру HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ nvata і створіть DMORD параметр з ім'ям DisableRemovable і значенням 1 (Зверніть увагу, що замість розділу nvata може бути ключ nvatabus).

Також є універсальний спосіб виставити для конкретного порту контролера атрибут диска "внутрішній порт" через реєстр.

Спочатку потрібно визначити номер шини контролера, через який підключений жорсткий диск. Для цього відкрийте диспетчер пристроїв devmgmt.msc, знайдіть в розділі дисків свій диск, відкрийте його властивості. Запам'ятайте номер шини (Bus Number) і номер порту (каналу) диска (Target ID). У моєму прикладі номер шини і порту - 0.

В Windows помітити порт контролера як внутрішній можна за допомогою параметр реєстру TreatAsInternalPort. Для цього перейдіть в HKLM \ SYSTEM \ CurrentControlSet \ Services \ msahci \ Controller (n) \ Channel (N), де (n) - номер контролера, через який підключений диск, а (N) номер каналу контролера.

Створіть в цьому ключі реєстру DMORD параметр з ім'ям TreatAsInternalPort і значенням 1.

Ця дія потрібно виконати для всіх SATA дисків, які ви хочете помітити внутрішніми. Наприклад, у вас на комп'ютері 2 контролера, до першого підключено 2 SATA диска, а до другого ще 1. Щоб позначити їх внутрішніми, потрібно виконати команди:

reg add "HKLM \ SYSTEM \ CurrentControlSet \ Services \ msahci \ Controller0 \ Channel0" / f / v TreatAsInternalPort / t REG_DWORD / d 0x00000001
reg add "HKLM \ SYSTEM \ CurrentControlSet \ Services \ msahci \ Controller0 \ Channel1" / f / v TreatAsInternalPort / t REG_DWORD / d 0x00000001
reg add "HKLM \ SYSTEM \ CurrentControlSet \ Services \ msahci \ Controller1 \ Channel0" / f / v TreatAsInternalPort / t REG_DWORD / d 0x00000001

Після внесення змін потрібно перезавантажити комп'ютер. Зверніть увагу, що номери телефонів, призначених дискам (які ви бачите в diskpart або diskmgmt.msc), не завжди відповідають номерам каналів SATA або RAID

В Windows 10 і 8.1 замість MSAHCI використовується драйвер StorAHCI, тому місце розташування параметра реєстру TreatAsInternalPort інше. Перейдіть в гілку реєстру HKLM \ SYSTEM \ CurrentControlSet \ Services \ storahci \ Parameters \ Device, створіть мультістроковий (REG_MULTI_SZ) параметр TreatAsInternalPort, в кожному рядку якого потрібно вказати номер порту SATA контролера, який потрібно позначити "внутрішнім". Наприклад, щоб позначити внутрішніми все диски з 0 до 3, як значення TreatAsInternalPort потрібно вказати:

0
1
2
3

Залишилося перезавантажити комп'ютер, і все SATA / SSD диски з портами від 0 до 3 пропадуть з безпечного вилучення і перестануть відображатися як removable.