notify dll,Taking Advantage of the Winlogon Notification Package

modern-web-guidance-src(TypeScript) 「modern-web-guidance-src(TypeScript)」是开源项目(TypeScript)。项目简介:Keep your coding agent up to date with the latest web best practices源码完整,下载解压即可查看使用,适合学习参考、课程设计与二次开发。 立即下载

Introduction

The Winlogon Notification Package is a DLL which exports functions that handle Winlogon.exe events. These event messages includes lock, unlock, logoff, logon, startup, shutdown, startscreensaver, stopscreensaver, and startshell. 

This article demonstrates how to use the Winlogon Notification Package as an alternative to NT Services. The main benefits for doing this is better handling of user activities. In addition, the Winlogon Notification Package will be very lightweight and requires much less code then its NT service equivalent. 

The Steps

Creating a Winlogon Notification package is very simple. Just create a DLL with specific functions to run during the Winlogon event messages. To let Winlogon.exe know about your DLL, simply add a few entries into the registry where appropriate. This method can be quite robust and versatile when combined with your services and applications.

Sample

This sample starts a WIN32 application before the user logon. Because the process is started by Winlogon, it is owned by the system account. Users may not end the process through 'End Task'. This is the exact way NT services behave. In this sample, the logoff notification will terminate the process. If the process needed to stay active, the EndProcessAtWinlogoff function should be removed. If we wanted the process to be owned by the user, we could use CreateProcessAsUser during a startup notification instead of a logon notification. 

Step 1.) - the dll

Collapse
//sample.cpp

#include <windows.h>
#include <Winwlx.h>

PROCESS_INFORMATION g_pi;
TCHAR g_szPath[] = _T("c:/somepath/execut.exe /"arguments/"");

//This function safely terminates a process, allowing
//it to do cleanup (ie. DLL detach)
//It can be found at the Windows Developer's Journal
SafeTerminateProcess(HANDLE hProcess, UINT uExitCode);   

//Entrance function for the DLL
BOOL WINAPI LibMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
        case DLL_PROCESS_ATTACH:
        {
	    DisableThreadLibraryCalls (hInstance);	
        }
        break;
    }
    return TRUE;
}

//Event handler for the Winlogon Logon event
VOID APIENTRY StartProcessAtWinLogon (PWLX_NOTIFICATION_INFO pInfo)
{
    STARTUPINFO si;
    si.cb = sizeof(STARTUPINFO); 
    si.lpReserved = NULL; 
    si.lpTitle = NULL; 
    si.lpDesktop = "WinSta0//Default"; 
    si.dwX = si.dwY = si.dwXSize = si.dwYSize = 0L; 
    si.dwFlags = 0;; 
    si.wShowWindow = SW_SHOW; 
    si.lpReserved2 = NULL; 
    si.cbReserved2 = 0; 
				
    CreateProcess(NULL, g_szPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE,
                  NULL, NULL, &si, &g_pi);
}

//Event handler for the Winlogon Logoff event.
VOID APIENTRY StopProcessAtWinLogoff (PWLX_NOTIFICATION_INFO pInfo)
{
    //terminates the process
    SafeTerminateProcess(g_pi.hProcess, 0xDEADBEEF);  
}

//other event handlers
VOID APIENTRY YOUR_EVENT_HANDLERS (PWLX_NOTIFICATION_INFO pInfo)
{
    //code
}

...

Step 2.) - the exports

The program hasn't exported any functions yet. We need to create a .def file.

sample.def

EXPORTS
StartProcessAtWinLogon
StopProcessAtWinLogoff

 

Now add the following to your linkage options in VC6 and build.

/def: "sample.def"

If everything went well, the files sample.dll and sample.exp will be in your output folder. Move these to /%NTROOT%/system32

Step 3.) - the registry

Add the following values and keys to the registry. These values communicate to Winlogon.exe and let it know which procedures to run during an event notification. Add as few or as many notification events as needed.

HKEY_LOCAL_MACHINE
    /Software
        /Microsoft
            /Windows NT
                /CurrentVersion
                    /Winlogon
                        /Notify
                            /NameOfProject
                                /Asynchronous  REG_DWORD  0
                                /Dllname       REG_SZ     NameOfDll.dll
                                /Impersonate   REG_DWORD  0
                                /Logon         REG_SZ     StartProcessAtWinLogon
                                /Logoff        REG_SZ     StopProcessAtWinLogoff
                                /...           REG_SZ     NameOfFunction

That's it! Now restart and Winlogon.exe will launch your app. 

嵌入式软件学习:创建标准的工程文件 立即下载

相关推荐

图书管理系统:图书编目+借还书+超期罚款,Python+SQLite 可跑源码

面向课程设计的图书管理系统。用 Python 标准库 + SQLite 实现图书编目、读者管理、借还书与超期罚款计算,支持库存校验、借阅上限和借阅历史查询,零第三方依赖即可离线跑通,含样例数据和冒烟测试。MIT。作者 blog.youkuaiyun.com/mtl1994

Taking Advantage of the Winlogon Notification Package

IntroductionThe Winlogon Notification Package is a DLL which exports functions that handle Winlogon.exe events. These event messages includes lock, unlock, logoff, logon, startup, shutdown, startscr

865

科技中介服务机构如何利用平台实现服务流程的全流程闭环与智能支持.docx

科技中介服务机构如何利用平台实现服务流程的全流程闭环与智能支持

触摸屏应用相关技术之二——鼠标键盘hook

触摸屏应用相关技术之二——鼠标键盘hook 上文提及,在系统启动过程中,到访问内容完全占据桌面的间隙,桌面直接暴露给访客,这是危险的间隙,需要想办法解决。 我们的应对措施是:在这段间隙中,对鼠标键盘进行完全锁定,直至访问内容全屏打开。开放鼠标左键,允许访客交互内容。 利用hook,我们可以在客...

chunning1112的博客 667

三相维也纳Vienna整流器电流过零畸变消除仿真模型【三种消除方法】(Simulink仿真实现)

内容概要:本文针对三相维也纳(Vienna)整流器在运行过程中存在的交流输入电流过零畸变问题,提出并实现了三种有效的消除方法,并基于Simulink平台构建了完整的仿真模型进行验证。首先深入分析了电流过零畸变的成因,主要包括控制延迟、功率器件的非理想开关特性以及调制策略在零电流切换时刻引发的不连续性。随后,系统阐述了三种核心抑制策略:一是改进电流环控制算法,引入前馈补偿机制以提升动态响应速度,减小因控制滞后导致的畸变;二是优化空间矢量脉宽调制(SVPWM)策略,通过对冗余小矢量作用时间的精确分配,实现中点电位平衡与谐波抑制的协同控制;三是采用死区时间补偿与非线性校正相结合的方法,有效抵消功率器件开关延迟、反向恢复等非线性因素带来的波形失真。仿真结果表明,所提出的复合控制策略能显著改善输入电流波形质量,大幅降低总谐波畸变率(THD),有效提升系统功率因数、电能质量和运行稳定性。该研究为高功率密度、高效率的三电平功率因数校正(PFC)整流器的设计与优化提供了可复现的仿真方案和理论依据。; 适合人群:具备电力电子与电力传动领域扎实的理论基础,熟练掌握Simulink/Matlab仿真工具,从事新能源发电、电动汽车充电、航空航天电源、工业变流器等方向的硕士/博士研究生、研发工程师及科研人员;尤其适合正在开展Vienna整流器拓扑结构、先进调制策略或高性能PFC控制技术相关课题研究与产品开发的专业技术人员。; 使用场景及目标:①深入理解三相Vienna整流器中电流过零畸变的物理机理与数学建模方法;②掌握基于SVPWM的中点电位平衡控制与谐波抑制的协同优化策略;③为设计高效率、低谐波的中大功率PFC整流器提供一套完整的、经过验证的仿真解决方案与参数设计思路,服务于科研项目攻关与工程产品原型开发。; 阅读建议:建议读者结合文中详述的三种消除方法,动手搭建或修改相应的Simulink仿真模型,通过对比不同控制策略下的电流波形、THD分析及中点电位波动情况,深入理解各方法的优劣与适用条件。在实践过程中,应重点关注控制参数(如PI调节器增益、前馈系数)的整定对系统稳定性、动态响应和抗干扰能力的影响。同时,可参考文档中提供的Mathcad计算书与双闭环设计案例,深化对整流器系统级设计与参数匹配的理解,实现理论与实践的深度融合。

高校技术转移办公室人员如何快速识别优质专利并推动其转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本文详细介绍了LLC谐振变换器在恒压恒流双竞争闭环控制下的Simulink仿真设计,并附有说明文档。该仿真系统基于LLC谐振变换器的工作特性,构建了恒压(CV)与恒流(CC)双闭环竞争控制策略,通过智能逻辑切换实现输出电压与电流的精确调节,特别适用于电池充电等需要分阶段恒流恒压控制的应用场景。研究涵盖系统建模、控制环路设计、关键参数整定及仿真结果分析,全面展示了变换器在不同负载条件下的输出稳定性与动态响应性能,充分验证了所提出控制策略的有效性与可靠性; 适合人群:具备电力电子、自动控制等相关专业知识背景,熟悉Simulink仿真工具,从事开关电源、新能源发电、电动汽车充电系统等电源产品研发的工程师及高校研究生; 使用场景及目标:① 深入掌握LLC谐振变换器在恒压恒流模式下的控制原理与实现机制;② 学习并实践双闭环竞争控制策略在仿真环境中的建模方法与模式切换逻辑设计技巧;③ 为高效率、高性能DC-DC变换器的研发与优化提供可靠的仿真参考和技术支撑; 阅读建议:建议结合提供的Simulink模型文件与说明文档进行同步学习,重点关注控制环路的结构设计、PI调节器参数的整定过程以及恒压/恒流模式间切换逻辑的实现细节,可通过调整输入电压、负载等参数进行仿真验证,以深化对LLC变换器动态行为与控制性能的理解。

高校技术转移办公室人员如何高效完成技术需求挖掘与转化对接?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构在开展技术交易撮合时,如何提升对接效率和成功率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

三相充电桩维也纳PFC+三电平LLC谐振变换器三电平PSIM仿真设计(Simulink仿真实现)

内容概要:本文详细阐述了三相充电桩中维也纳功率因数校正(PFC)电路与三电平LLC谐振变换器的PSIM仿真设计,并基于Simulink平台实现了系统建模与闭环控制策略的仿真验证。重点探讨了维也纳PFC与全桥LLC谐振变换器的协同工作机理,涵盖变频控制与移相控制相结合的混合控制策略设计与优化。文档提供了完整的仿真模型构建流程,包括主电路参数设计、控制环路搭建、系统动态响应分析及稳定性验证,尤其关注在不同负载条件下的效率表现与电能质量改善能力,旨在为新能源汽车充电设施与高效电力电子变换器的研发提供一套可复现、可扩展的技术方案。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,从事新能源汽车充电技术、电力变换器拓扑研究、高效电源系统开发的科研人员、工程师及高校研究生。; 使用场景及目标:① 深入理解三相维也纳PFC与三电平LLC谐振变换器的工作原理及其联合控制方法;② 掌握基于Simulink的电力电子系统建模、仿真与闭环调试技术;③ 为高性能充电桩系统的研发、优化与工程化实现提供理论依据和仿真支撑。; 阅读建议:建议读者结合电力电子变换器基础理论,循序渐进地学习文档内容,重点关注控制策略的设计逻辑与参数整定方法,并动手实践仿真模型的搭建与调试,以深化对系统动态特性与控制性能的理解。

禁止系统自动更新-Windows Update Blocker-v1.8 .exe

禁止系统自动更新_Windows Update Blocker_v1.8 .exe

产业园区在推动企业技术需求对接时,如何实现精准匹配与资源聚合?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

大模型就业课(零基础可学)

面向零基础/小白/在职人群的大模型就业课,课程都是生产项目,学完直接找工作,工作直接复用技术栈。

基于KKT条件的综合能源系统园区(IESP)双层优化模型,采用价格灵敏度方法,模拟综合能源服务提供商在电力市场中的战略套利行为研究(Matlab代码实现)

内容概要:本文围绕基于KKT条件的综合能源系统园区(IESP)双层优化模型展开研究,重点采用价格灵敏度方法模拟综合能源服务提供商在电力市场中的战略套利行为,并通过Matlab代码实现模型求解。研究构建了上层为市场策略优化、下层为系统运行优化的双层架构,利用KKT条件将下层问题转化为约束条件,结合价格灵敏度分析揭示了市场主体在电价波动中的响应机制与盈利模式。文中详细阐述了模型的数学推导、求解流程及仿真结果,验证了该方法在提升综合能源系统经济性和市场竞争力方面的有效性。; 适合人群:具备一定电力系统、优化理论和博弈论基础知识,从事能源互联网、综合能源系统、电力市场等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究综合能源系统在电力市场环境下的优化运行与商业模式;②掌握双层优化模型的建模与求解方法,特别是基于KKT条件的转化技巧;③理解价格灵敏度在市场策略分析中的应用,模拟服务提供商的战略决策行为。; 阅读建议:此资源侧重于理论建模与数值仿真,建议读者结合Matlab代码深入理解算法实现细节,重点关注KKT条件的处理方式与价格灵敏度的计算逻辑,并尝试复现仿真结果以加深对双层优化机制的理解。

高校技术转移办公室如何提升成果转化服务能力?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

spring boot 集成cas(一) 服务端搭建

简单点就是统一服务认证,多个系统一次登录。俗称单点登录。

慕孑晨的博客 1957
上一篇: 无需输入密码登陆3389
下一篇: 将动态连接库注入到其他进程中的一种新方法
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值