StartService 加载驱动提示 “拒绝访问” 该如何解决

sky_123 2009-08-30 09:41:02
刚开始写驱动
就写了哥简单的 什么也不做就是输出点信息
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status = STATUS_SUCCESS;
DbgPrint("DriverDemo: DriverEntry...\n");
// 初始化各个派遣例

return STATUS_SUCCESS;
}

让后动态加载这个驱动

CString szServiceName = _T("MyDriver");
CString szFilePath = _T("C:\\WINDOWS\\system32\\drivers\\Drv2.sys");


BOOL bRet = FALSE;
SC_HANDLE hService = ::CreateService(
hSCM, szServiceName, szServiceName,
SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE,
szFilePath, NULL, NULL, _T(""), NULL,NULL);
if (! hService)
{
hService = ::OpenService(hSCM, szServiceName, SERVICE_STOP | DELETE);
}

bRet = StartService(hService, 0, NULL) ;
long lRet = GetLastError();


然后StartService返回失败 GetLastError返回值是5 拒绝访问。
请问该如何解决 谢谢??
...全文
895 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_123 2009-08-30
  • 打赏
  • 举报
回复
用DriverMonitor可以启动
sky_123 2009-08-30
  • 打赏
  • 举报
回复
这个软件是不是要下?
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
你看看用DriverMonitor能不能加载
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
我没QQ
sky_123 2009-08-30
  • 打赏
  • 举报
回复
能在QQ上聊吗
sky_123 2009-08-30
  • 打赏
  • 举报
回复
BOOL EnablePrivilege(LPTSTR lpName, BOOL fEnable)
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;

if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;

AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);

CloseHandle(hObject);
return TRUE;
}

return FALSE;
}

我掉 EnablePrivilege(SE_LOAD_DRIVER_NAME, TRUE);后
还是一样有问题
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
sky_123 2009-08-30
  • 打赏
  • 举报
回复
能问下要怎样提权吗
sky_123 2009-08-30
  • 打赏
  • 举报
回复
能问下要怎样提权吗
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
大概是权限问题,你试试我说的提权
sky_123 2009-08-30
  • 打赏
  • 举报
回复
还有就是尝试先提权再加载,提权限SE_LOAD_DRIVER_NAME


要怎样做
刚开始接触驱动开发
多包含
sky_123 2009-08-30
  • 打赏
  • 举报
回复
OpenSCManager和CreateService返回值都是正确的
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
还有,你前面的OpenSCManager和CreateService都用了吗?
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
你试试看用DriverMonitor能不能加载你的驱动?

还有就是尝试先提权再加载,提权限SE_LOAD_DRIVER_NAME
sky_123 2009-08-30
  • 打赏
  • 举报
回复
什么都没改
现在开机试了下就可以了
哈哈
但不知道为什么
MoXiaoRab 2009-08-30
  • 打赏
  • 举报
回复
那得检查下你的代码,肯定哪里写得有问题了
fangchao918628 2009-08-30
  • 打赏
  • 举报
回复 1
hService = ::OpenService(hSCM, szServiceName, SERVICE_STOP | DELETE); 

改成
::OpenService(hSCM, szServiceName, SERVICE_ALL_ACCESS); 

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧