随笔分类 - Windows
windows 开发 windows驱动开发 内核 安全
摘要:要改变Windows服务的启动顺序,只要修改Windows的注册表就可 以了。任何Windows服务的注册信息可以在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\键下找到。下面就介绍几个与服务启动顺序相关的服务的值: Group值:一个REG_SZ类型的值。它用来描述服务属于那一个服务组。如果服务没有这一项,那么它不属于任何一个服务组,系统则会默认的将其在所有的服务启动后加载。 Tag值:一个REG_DWORD类型的值。它用来描述服务的标识。每一个在服务组中的服务都会被分配一个唯一的标识。注册表通过对服务组的服务标识的排..
阅读全文
摘要:解决国际化问题这的确是个老话重谈了,因为这里面确实也没有什么可以称的上技术含量的,只是实现起来有点烦琐,不过我还是要写出来,希望刚接触这方面的同行们不至于走太多的弯路。 由于MFC应用程序也有自己的资源文件,当你调用MFC函数比如 CString::LoadString 或其它 LoadIcon 时,MFC应用程序框架首先跟踪搜索EXE文件的资源,然后才是DLL和MFC的资源,因此在使用纯资源DLL时候,必须人为先改变资源的搜索顺序,可以通过使用 AfxSetResourceHandle 函数来实现,具体实现如下:DE>BOOL CMultilanguageApp::InitInstan
阅读全文
摘要:precreate里监控.exe文件的打开,发现每打开 .exe文件后 会接着打开 .exe.config 文件,这样 如果不过滤.exe.config的话 在随后的重定向文件的操作中会失败。最简单的处理办法在 precreate里面 取出文件名后 判断后缀是不是.exe 是的话 在继续判断,否则一律放行
阅读全文
摘要:在某些时候,我们的程序需要执行一些系统的操作,需要使用管理员权限才能完成,所以,我们必须让用户使用管理员权限来执行我们的程序。本文主要介绍,,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。以下使用VS2008+WTL8.0+Vista举例 .1. 使用VS2008建立WTL工程,在新建工程向导中选择“Add Common Controls Manifest” 。2. 编译工程,在输出目录生成 *.exe.embed.manifest 文件,使用记事本打开,将level="asInvoker" 改成 level="requ
阅读全文
摘要:Windows Vista区别对待不同的进程同样是系统内置的组件,例如regedit、mmc等GUI组件,其兼容性设置也被锁死,但是为什么系统会主动询问是否提升权限?难道命令行工具是后妈养的,Windows Vista有意给它穿小鞋?用记事本(或者其他编辑器)打开分别打开regedit.exe和sc.exe,进行仔细对比查看,发现了秘密所在:regedit.exe和SC.exe的内容分别如下图所示。图4图5从图中可以看出:在SC.exe中有如下xml格式的语句:level="asInvoker"regedit.exe中有如下xml格式的语句:level="high
阅读全文
摘要:拿到了MS的Windows Vista Developer Story,正在抽空仔细的看,这里当作记一些笔记吧,顺便把文档作一些翻译和归纳记录一下,免得以后忘记了,呵呵。Vista UAC和开发相关的新技术主要有下面一些:ActiveX Installer ServiceActiveX Installer Service为标准用户(standard users)提供Active控件安装的服务,这项服务保证了常规的运行任务不会被失败的ActiveX空间安装影响。Vista为IT专业人士提供了一些组安全策略,用于定义标准用户可以安装ActiveX控件的URL。ActiveX Installer S
阅读全文
摘要:1. 64bit操作系统的重定向机制以及目的 在64bit操作系统中,为了无缝兼容32bit程序的运行,64bit的Windows操作系统采用重定向机制。目的是为了能让32bit程序在 64bit的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64bit程序冲突。微软采用重定向机制的原理很简单,说白了就是 让关键文件/文件夹或者关键注册表有2个副本。 1个副本是给32bit程序访问,一个副本给64bit程序访问。 PS: 以上不是用专业术语解释,只是用白话解释。如果觉得不够专业,可以查阅详细资料2. 64bit操作系统是如何控制32bit和64bit程序访问对应各自的副本? 这个问
阅读全文
摘要:# pragma data_seg( "shared ")变量定义并初始化# pragma data_seg()不能使用动态分配内存的类型,比如cstring,vector,list之类。申明数组后要初始化,比如 int g_arrBlockPath[260] = {0};可在dll的def文件中 申明共享节SECTIONS .SharedData READ WRITE SHARED或者编译指令# pragma comment(linker, "/section:shared,rws ")在这里需要注意的是,比如控制web访问的spi。要清楚是浏览器先加
阅读全文
摘要:在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。栈是一种先进后出的数据结构,栈有一个存储区、一个栈顶指针。栈顶指针指向堆栈中第一个可用的数据项(被称为栈顶)
阅读全文
摘要:如果过度的使用栈空间,裸机没有表现出什么不正常,结果装了个杀毒软件就蓝屏。
阅读全文
摘要:这篇文章中的信息适用于:适用于 Windows NT 4.0 的 Microsoft Win32 设备驱动程序工具包适用于 Windows NT 3.51 的 Microsoft Win32 设备驱动程序工具包本文的发布号曾为 CHS186775概要下面是对创建 Windows NT 设备驱动程序的一些提示。 这些提示适用于所有技术。 还可以将这些提示用作解决驱动程序问题的核对清单。要有效地使用下面提供的信息,您需要具备 Windows NT 体系结构的基本知识和某些设备驱动程序的开发经验。 有关开发设备驱动程序的详细信息,请参见 Windows NT 设备驱动程序工具包 (DDK),该工具包
阅读全文
摘要:这篇文章中的信息适用于:适用于 Windows NT 3.5 的 Microsoft Win32 设备驱动程序工具包适用于 Windows NT 3.5 的 Microsoft Win32 设备驱动程序工具包适用于 Windows NT 3.51 的 Microsoft Win32 设备驱动程序工具包适用于 Windows NT 4.0 的 Microsoft Win32 设备驱动程序工具包适用于 Windows 2000 的 Microsoft Win32 设备驱动程序工具包本文的发布号曾为 CHS115486概要设计 Windows NT 时所采用的概念是:第一个提出占有某设备的驱动程序获
阅读全文
浙公网安备 33010602011771号