C++ 打开物理驱动器。窗户

C++ 打开物理驱动器。窗户,c++,windows,C++,Windows,我尝试像这样打开物理驱动器 ofstream * _fileWriter->open(_destPath, std::ofstream::out | std::ofstream::binary); _destPath=\\物理驱动器1 但是,当我试着去做的时候 if (!(_fileWriter->is_open())) return false; 它返回false您必须使用提升的访问权限运行程序 请求GENERIC\u READ/GENERIC\u WRITE hdri

我尝试像这样打开物理驱动器

ofstream * _fileWriter->open(_destPath, std::ofstream::out | std::ofstream::binary);
_destPath=\\物理驱动器1 但是,当我试着去做的时候

if (!(_fileWriter->is_open()))
    return false;

它返回false

您必须使用提升的访问权限运行程序

请求
GENERIC\u READ
/
GENERIC\u WRITE

hdrive = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ,
    FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
如果您只想获取磁盘信息,可以在没有读/写访问权限的情况下打开磁盘,下面的代码不需要提升访问权限:

HANDLE hdrive;
hdrive = CreateFile(L"\\\\.\\PhysicalDrive0", 0, 
    FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hdrive == INVALID_HANDLE_VALUE)
{
    cout << "error " << GetLastError() << endl;
    return 0;
}

cout << "open" << endl;
CloseHandle(hdrive);
handlehdrive;
hdrive=CreateFile(L“\\.\\PhysicalDrive0”,0,
文件共享读取文件共享写入,0,打开现有文件,0,0);
if(hdrive==无效的句柄值)
{

cout您必须以提升的访问权限运行程序

请求
GENERIC\u READ
/
GENERIC\u WRITE

hdrive = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ,
    FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
如果您只想获取磁盘信息,可以在没有读/写访问权限的情况下打开磁盘,下面的代码不需要提升访问权限:

HANDLE hdrive;
hdrive = CreateFile(L"\\\\.\\PhysicalDrive0", 0, 
    FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hdrive == INVALID_HANDLE_VALUE)
{
    cout << "error " << GetLastError() << endl;
    return 0;
}

cout << "open" << endl;
CloseHandle(hdrive);
handlehdrive;
hdrive=CreateFile(L“\\.\\PhysicalDrive0”,0,
文件共享读取文件共享写入,0,打开现有文件,0,0);
if(hdrive==无效的句柄值)
{

难道我一直认为,你可以直接用一个fstream类打开文件。fileWriter是指针吗?是的,fileWriter是指针吗?fileWriter指向有效的ofstream?是的。当我尝试使用ifstream打开destPath时。ifstream是可以的,但当我使用ofstream时,它不是打开驱动器使用语言包装器访问低级操作系统通常是一种错误d想法。并不是说你的代码无论如何都是可移植的……我一直认为,你可以直接用一个fstream类打开文件。fileWriter是指针吗?是的,fileWriter是指针吗?fileWriter指向有效的ofstream?是的。当我试着用ifstream打开destPath时。ifstream是可以的,但当我使用ofstream时,它不会用将语言包装到低级操作系统访问通常是个坏主意。并不是说你的代码无论如何都是可移植的。。。