提示“dwwin.exe DLL 初始化失败”错误对话框的解决方法

关机的时候系统会自动弹出个错误对话框,提示 “dwwin.exe DLL 初始化失败”,然后才关机,请问大虾如何解决?我已经试过以下3钟方法,均没效果!1、单击“开

始→运行”并在打开的窗口中输入“regedit”,然后在注册表编辑器中展开以下分支:

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug],然后在右侧窗口中

将“auto”的值改为0。
2、右键点我的电脑--》属性--》高级,关闭错误报告。
3、开始--》运行--》drwtsn32,只勾取“转储全部线程上下文” 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Windows后台服务,可以使用Windows API中的Service Control Manager(SCM)来创建和管理服务。以下是一个简单的实现过程: 1. 创建服务 使用CreateService函数创建服务,并指定服务名称、描述、启动类型、服务程序路径等信息。 2. 启动服务 使用StartService函数启动服务。 3. 定时监控和重启 使用定时器API(例如SetTimer)定时监控进程是否运行,如果进程未运行,则使用CreateProcess函数重启进程。 4. 读取配置文件 使用标准C++库可以读取.txt文件中的内容,并解析出进程名和绝对路径。 5. 判断进程是否运行 使用Windows API中的EnumProcesses函数获取当前正在运行的进程列表,遍历列表判断指定进程是否在运行。 下面是一个简单的示例代码: ```c++ #include <windows.h> #include <iostream> #include <fstream> #include <string> #include <vector> #define SERVICE_NAME "ProcessMonitor" #define CONFIG_FILE "config.txt" #define CHECK_INTERVAL 5000 // 5s #define RESTART_INTERVAL 30000 // 30s #define MAX_RESTART_COUNT 3 SERVICE_STATUS g_serviceStatus; SERVICE_STATUS_HANDLE g_serviceStatusHandle; HANDLE g_hStopEvent; std::vector<std::pair<std::string, std::string>> g_processes; void WINAPI ServiceCtrlHandler(DWORD dwCtrlCode) { switch (dwCtrlCode) { case SERVICE_CONTROL_STOP: g_serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; SetServiceStatus(g_serviceStatusHandle, &g_serviceStatus); SetEvent(g_hStopEvent); break; } } void WINAPI ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv) { g_serviceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; g_serviceStatus.dwCurrentState = SERVICE_START_PENDING; g_serviceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; g_serviceStatus.dwWin32ExitCode = NO_ERROR; g_serviceStatus.dwServiceSpecificExitCode = 0; g_serviceStatus.dwCheckPoint = 0; g_serviceStatus.dwWaitHint = 0; g_serviceStatusHandle = RegisterServiceCtrlHandler(SERVICE_NAME, ServiceCtrlHandler); if (g_serviceStatusHandle == NULL) { return; } g_serviceStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(g_serviceStatusHandle, &g_serviceStatus); // read config file std::ifstream config(CONFIG_FILE); if (!config) { return; } std::string processName, processPath; while (config >> processName >> processPath) { g_processes.push_back(std::make_pair(processName, processPath)); } // monitor processes DWORD dwRestartCount = 0; while (WaitForSingleObject(g_hStopEvent, CHECK_INTERVAL) != WAIT_OBJECT_0) { bool bAllRunning = true; for (auto& process : g_processes) { bool bRunning = false; // check if process is running DWORD aProcesses[1024], cbNeeded, cProcesses; if (EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) { cProcesses = cbNeeded / sizeof(DWORD); for (DWORD i = 0; i < cProcesses; i++) { DWORD processId = aProcesses[i]; TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>"); HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId); if (hProcess) { HMODULE hModule; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hModule, sizeof(hModule), &cbNeeded)) { GetModuleBaseName(hProcess, hModule, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)); } CloseHandle(hProcess); } if (_tcscmp(szProcessName, process.first.c_str()) == 0) { bRunning = true; break; } } } if (!bRunning) { bAllRunning = false; // restart process if (dwRestartCount < MAX_RESTART_COUNT) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); if (CreateProcess(process.second.c_str(), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { dwRestartCount++; } } } } if (bAllRunning) { dwRestartCount = 0; } } g_serviceStatus.dwCurrentState = SERVICE_STOPPED; SetServiceStatus(g_serviceStatusHandle, &g_serviceStatus); } int main() { SERVICE_TABLE_ENTRY serviceTable[] = { {SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain}, {NULL, NULL} }; if (!StartServiceCtrlDispatcher(serviceTable)) { return GetLastError(); } return 0; } ``` 需要注意的是,创建服务时需要管理员权限,可以在命令行中使用sc命令创建,例如: ``` sc create ProcessMonitor binPath= "C:\Path\To\ProcessMonitor.exe" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值