Я разрабатываю какое-то расширение пространства имен оболочки Windows (NE). Мое расширение предоставляет настраиваемый элемент контекстного меню для файлов и папок. Среди прочего мне нужно создать новый файл под моим NE. Я пытаюсь создать файл как:
auto flags = O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_CLOEXEC;
auto fd = _wopen(L"c:\\test.txt", flags , 0666);
Я тоже пытался использовать "\\?\"
префикс:
auto flags = O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_CLOEXEC;
auto fd = _wopen(L"\\\\?\\c:\\test.txt", flags , 0666);
В любом случае возвращаемый дескриптор файла является отрицательным и EACCES
— ‘Доступ запрещен’
Что мне не хватает?
Пользователи не могут создавать файлы в C: \ (без повышения прав).
Расширение оболочки работает с учетными данными текущего пользователя, поэтому вы не можете создавать файлы там.
Других решений пока нет …