如何跟踪或检测USB设备的格式以及如何知道它是使用c ++完成格式化?

时间:2016-06-09 05:06:08

标签: c++ visual-studio winapi visual-c++ usb

我想创建一个用户特权EXE,可以检测USB设备的格式化,并通知设备已开始格式化,并在完成后显示消息格式化已完成。

使用以下示例代码创建了一个C ++控制台应用程序。 但它需要管理员权限。

#include "stdafx.h"
#include <fstream>
#include <windows.h>
#include <iostream>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
   {
char *Fpath="D:\\$Extend\\$RmMetadata\\$TxfLog\\$TxfLog.blf";
std::ifstream is;
while(true)
{
    is.open(Fpath);
    if(is.is_open())
    {
        std::cout<<"Waiting for format\n";
        is.close();
    }
    else
    {
        std::cout<<"formating device\n";
    }
    Sleep(1000);
}
getchar();
return 0;
}

2 个答案:

答案 0 :(得分:1)

I got the answer


#include "stdafx.h"
#include <fstream>
#include <windows.h>
#include <iostream>
#include <stdio.h>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    while(true)
    {
        WIN32_FIND_DATA data;
        HANDLE h = FindFirstFile(L"D:\\*.*",&data); // specify the drive letter

        if( h!=INVALID_HANDLE_VALUE ) 
        {
            cout << "Waiting\n";
        } 
        else 
            cout << "Formatting\n";
        FindClose(h);
        Sleep(1000);
    }
    getchar();
    return 0;
}

答案 1 :(得分:0)

如果此进程需要管理员权限,则需要它,没有选项。您可以设置NTFS权限(我不知道如何处理USB物理文件),或者您需要设置本地安全策略(再次确定哪一个 - 用secpol.msc打开)。但我觉得你对此无能为力。

要使您的进程具有更高的权限(提升的权限),您需要设置链接器选项:

enter image description here