Как получить доступ к физическому диску с помощью SafeFileHandle и FileStream в С #?
Я использую C# для доступа к физическому диску.
Я хочу получить доступ к физическому диску с помощью SafeFileHandle и CreateFile.
kvp.value - это значение словаря "\\.\PHYSICALDRIVE0".
Проблемной частью является часть FileStream. Попытка скомпилировать, как описано выше, приводит к ошибке с сообщением "Неверный дескриптор".
Выполнение с правами администратора разрешит эту часть, но покажет, что у вас нет разрешения на запись в выбранный файл в будущем на логическом диске.
Я слышал, что нам нужно удалить права администратора для этой проблемы, и в настоящее время мы собираем ее без прав администратора, и есть проблема с дескриптором.
handle, переменная для первого SafeFileHandle, приближается к PHYSICALDRIVE, а disk_log, переменная для второго SafeFileHandle, приближается к LOGICALDIRVE.
Я надеюсь изменить шестнадцатеричное значение одного файла, открыв логический диск.
SafeFileHandle handle = CreateFile(kvp.Value, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, 3, FILE_FLAG_NO_BUFFERING, IntPtr.Zero);
if (!physical_drive_list.Equals(kvp.Value))
{
FileStream disk = new FileStream(handle, FileAccess.ReadWrite);
try
{
foreach (var kvp_log in logical_list)
{
if (kvp_log.Value.Equals(input[0]))
{
string logical_drive_list = "";
SafeFileHandle log_hand = CreateFile(kvp_log.Key, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, 3, FILE_FLAG_NO_BUFFERING, IntPtr.Zero);
if (!logical_drive_list.Equals(kvp_log.Key))
{
logical_drive_list = kvp_log.Key;
FileStream disk_log = new FileStream(log_hand, FileAccess.ReadWrite);
try
{
disk_log.Read(classes.vbr, 0, 512);
UInt32 Sector_Per_Cluster_Value = classes.vbr[13];
UInt32 MFT_VALUE = 0;