为什么不创建文件?

问题描述

我尝试使用内核驱动程序创建“ txt”文件。 使用“ OSRLOADER”成功创建了文件,但是当我尝试使用CreateService API将驱动程序作为服务加载时,找不到文件

出什么问题了?

创建服务的程序:

int main() {

SC_HANDLE schManager;
SC_HANDLE schService;
SC_HANDLE schopen;

schManager = OpenSCManagerA(0,SC_MANAGER_ALL_ACCESS);
if (!schManager) {
    printf("Open SCM fails.\nError_Code: %d",GetLastError());
    return -1;
}
printf("Open SCM Successfully.......\n");

schService = CreateServiceA(
    schManager,"file",SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_norMAL,"C:\\Users\\abc\\Desktop\\CreateFile.sys",0
);

if (!schService) {
    printf("\nService fails.\nError_Code: %d",GetLastError());
    return -1;
}
printf("Service Created Successfully.......\n");

schopen = OpenServiceA(schManager,SERVICE_ALL_ACCESS);

if (!schopen) {
    printf("\nService fails to open.\nError_Code: %d",GetLastError());
    return -1;
}
printf("Service Opened Successfully.......\n");

StartServiceA(schService,0);

CloseHandle(schManager);
CloseHandle(schService);
CloseHandle(schopen);

return 0;}

............................................... .....................

驾驶员:

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) {

OBJECT_ATTRIBUTES objattr;
UNICODE_STRING filename = RTL_CONSTANT_STRING(L"\\??\\c:\\test.txt");
NTSTATUS status;
HANDLE filehandle;
IO_STATUS_BLOCK ioStatusBlock = { 0 };

//Initialize an object for creating files ==> It will be used in ZwCreateFile()
InitializeObjectAttributes(&objattr,&filename,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,NULL,NULL);


status = ZwCreateFile(
    &filehandle,GENERIC_READ | GENERIC_WRITE,&objattr,&ioStatusBlock,FILE_ATTRIBUTE_norMAL,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,FILE_OVERWRITE_IF,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_ALERT,0
);

if (!status) {
    DbgPrint("Error While Creating file.......");
}
ZwClose(filehandle);
return STATUS_SUCCESS;}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)