第一步:使用winhex把驱动文件的二进制数据使用c源码方式复制
第二步:把数据保存到头文件中
第三步:在自己的应用程序里把二进制数据释放到文件C:/WINDOWS/system32/Drivers/LoadFirst.sys中,然后就可以
BOOL ReleaseFile(LPCWSTR pFileName)
{
HANDLE hFile=CreateFileW(pFileName,
GENERIC_ALL,
FILE_SHARE_READ |FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,//不管文件存不存在都创建
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("文件创建失败,错误码:\n",GetLastError());
return FALSE;
}
DWORD dwRet = 0;
WriteFile(hFile, DriverFileData, sizeof(DriverFileData), &dwRet, NULL);
if (dwRet == 0)
{
printf("文件写入失败,错误码:\n", GetLastError());
CloseHandle(hFile);
return FALSE;
}
CloseHandle(hFile);
return TRUE;
}
VOID DriverInstall2()
{
ReleaseFile(TEXT("C:/WINDOWS/system32/Drivers/LoadFirst.sys"));
SC_HANDLE hSCmanager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
SC_HANDLE hService;
DWORD dwTag = 1;
hService = CreateService(hSCmanager,
TEXT("loadfirst"),
TEXT("loadfirst"),
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_BOOT_START,
SERVICE_ERROR_IGNORE,
TEXT("System32\\Drivers\\loadfirst.sys"), //驱动的路径
TEXT("System Reserved"),
&dwTag, NULL, NULL, NULL
);
// if (hService != NULL)
// {
// StartService(hService,NULL,NULL);
// }
CloseServiceHandle(hSCmanager);
CloseServiceHandle(hService);
}