К сожалению, вы не сможете сделать это без P / Invoking для собственного Windows API.
Во-первых, вам нужно открыть дескриптор файла с помощью собственного вызова P / Invoke. Это делается с помощью функции OpenFileById WINAPI. Вот как это использовать на MSDN, вот другая ссылка , подробно объясняющая это на форумах MSDN, и вот некоторая помощь (pinvoke.net) о том, построить ваш P / Invoke вызов.
Как только вы получите дескриптор файла, вам нужно обернуть его в SafeFileHandle, на этот раз в безопасный, управляемый C #:
// nativeHandle is the WINAPI handle you have acquired with the P/Invoke call
SafeFileHandle safeHandle = new SafeFileHandle(nativeHandle, true);
Теперь вы можете открыть поток файлов напрямую:
Stream stream = new FileStream(safeHandle, FileAccess.ReadWrite);
И с этого момента вы можете использовать его как любой другой файл или поток в C #. Не забудьте утилизировать свои объекты, как только вы закончите.