在windows shell命名空间扩展下使用_wopen()

时间:2014-03-06 08:47:18

标签: c++ windows fopen explorer

我正在开发某种Windows shell命名空间扩展(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);

无论如何返回的文件描述符是否定的,而errno是EACCES - '权限被拒绝' 我错过了什么?

1 个答案:

答案 0 :(得分:2)

用户无法在C:\(无海拔)中创建文件。

shell扩展使用当前用户的凭据运行,因此您无法在那里创建文件。