首页 电脑 电脑学堂 查看内容

文件反删除代码

2010-12-3 16:36 623 0

摘要:     短短数行代码让很多号称驱动级的强删文件工具失效    这个代码来自去年写一篇科普文章:《[爆老技术]NTFS之hardlink攻防之...
关键词: nbsp txt FILE 工具 hfile1 printf Create GetLastError WRITE CreateFile

    #include <stdio.h>    #include <windows.h>    #include <Setupapi.h>    #include <objbase.h>    void EnumDevices(HDEVINFO hDevInfo)    {    SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};    LPOLESTR guid;    char devName[128];    char instanceId[128];    for (int i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)    {    StringFromCLSID(DeviceInfoData.ClassGuid,&guid);    SetupDiClassNameFromGuid(&DeviceInfoData.ClassGuid,devName,128,NULL);    if(!strcmp(devName,"Net"))    {    SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,instanceId,128,NULL);    if(!strncmp(instanceId,"PCI",3))    {    wprintf(L"%s ",guid);    printf("%s ",devName);    printf("%s ",instanceId);    SP_PROPCHANGE_PARAMS params = {sizeof(SP_CLASSINSTALL_HEADER )};    params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;    params.Scope = DICS_FLAG_CONFIGSPECIFIC;    params.StateChange = DICS_DISABLE;    params.HwProfile = 0;    SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER*)&params, sizeof(SP_PROPCHANGE_PARAMS));    SetupDiChangeState(hDevInfo, &DeviceInfoData);    }    }    CoTaskMemFree(guid);    }    }    int main(int argc, char* argv[])    {    HDEVINFO hDevInfo = INVALID_HANDLE_VALUE;    hDevInfo = SetupDiGetClassDevs(NULL,NULL,NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);    if(INVALID_HANDLE_VALUE == hDevInfo)    return GetLastError();    EnumDevices(hDevInfo);    SetupDiDestroyDeviceInfoList(hDevInfo);    return 0;    }
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部