Как получить доступ к RamDisk Drive из учетной записи пользователя без прав администратора в Windows XP

Я успешно могу создать / получить доступ к диску Ram объемом 20 МБ, используя образец RAMDISK в WinDDK, используя мою учетную запись администратора.

Однако, когда я вхожу в систему как пользователь без прав администратора на той же машине, я получаю ошибку "Отказано в доступе" при двойном щелчке на том же диске Ram для доступа к нему. Пожалуйста, кто-нибудь здесь может рассказать, как дать доступ всем пользователям к этому диску.

2 ответа

Я не могу себе представить, почему Microsoft выпустит образец ramdisk без установки своих разрешений, но они сделали... так что по умолчанию это разрешения только для администратора.

Вам необходимо вызвать WdfDeviceInitAssignSDDLString() из RamDiskEvtDeviceAdd(), после вызова WdfDeviceInitAssignName() и перед вызовом WdfDeviceCreate(). Обратите внимание, что эта функция доступна только в том случае, если вы ссылаетесь на wdmsec.lib, который вам нужно добавить в файл "sources". И вы, вероятно, захотите использовать одну из строк определения ACL в wdmsec.h, хотя вы можете написать свою собственную, если хотите изучить ее структуру.

Еще одна проблема, связанная с образцом драйвера ramdisk от Microsoft, заключается в том, что он не будет работать выше 32 МБ (на самом деле он будет работать только до 31,99 МБ), поскольку код не обрабатывает переполнение 16-битного bootSector->bsSectors; за пределами общего сектора 0x0000FFFF следует установить нулевое значение bootSector-> bsSectors и использовать вместо этого 32-разрядный bootSector->bsHugeSectors.

Обратите внимание, что после исправления проблемы bootSector->bsHugeSectors вы настраиваете себя на то, чтобы исчерпать память невыгружаемого ядра, если не будете осторожны... хотя в большинстве случаев вы в безопасности до 96 МБ, поскольку в большинстве (современных) В некоторых случаях в вашей системе WinXP доступно 128 МБ памяти невыгружаемого ядра. Только не забывайте, что ваш драйвер ramdisk - не единственное, что использует пул невыгружаемых страниц.

Я нашел ниже образец, размещенный на сайте поддержки Microsoft, который создает диск Ramdisk, доступ к которому возможен через учетные записи не администратора. Работает на 2000, xp, win7. Не пробовал на Vista. http://support.microsoft.com/kb/257405

Другие вопросы по тегам