查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 
 
 
 

通过修改程序解决win7下应用程序兼容性助手弹出

2014-6-30 16:42:55 阅读371 评论1 302014/06 June30

在win7和vista下,有一个系统兼容性助手功能,利用VS2008开发的程序在运行时,总是弹出应用程序兼容性助手提示框,非常烦人,事实上我们的程序兼容性是没有问题的,只不过是在程序中没有指定应用程序兼容的操作系统,所以导致了这一问题。

           .menifest文件是一个随工程编译产生的xml文件,作用是为操作系统提供了对应用程序部分信息的描述,每个exe程序或者dll都必须有一个manifest,对于应用程序而言,Manifest可以是一个和exe文件同一目录下的.manifest文件,也可以是作为一个资源嵌入在exe文件内部的(通过修改项目配置manifest tool->input output->Embed Manifest->yes), 如果应用程序没有.manifest文件,则会提示丢失MSVCR90D.dll,无法运行。

作者  | 2014-6-30 16:42:55 | 阅读(371) |评论(1) | 阅读全文>>

CListCtrl插入数据避免闪烁

2012-9-18 10:33:28 阅读914 评论0 182012/09 Sept18

1.锁定窗口,不进行刷新

m_list.LockWindowUpdate();


2.设定列表不进行重画

m_list.SetRedraw(FALSE);

 

 3.清空列表,删除历史数据

作者  | 2012-9-18 10:33:28 | 阅读(914) |评论(0) | 阅读全文>>

【引用】Scancode Map

2012-2-20 11:23:48 阅读935 评论0 202012/02 Feb20

为了正确设置,我们有必要先了解一下“Scancode Map”(扫描码映射)。“Scancode Map”是注册表中[HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]中的一个二进制键值(默认没有,需新建),并且有固定的格式。Scancode Map 代码的一般格式是:“hex:00,00,00,00,00,00,00,00,|02|,00,00,00,|映射之后的扫描码(XX XX),原扫描码(XX XX)|00,00,00,00”。其含义为:前8个00(DWord

作者  | 2012-2-20 11:23:48 | 阅读(935) |评论(0) | 阅读全文>>

多核CPU inline hook注意的地方

2012-2-10 17:19:01 阅读1886 评论0 102012/02 Feb10

看雪:http://bbs.pediy.com/showthread.php?t=146313  

  else  
    {
        //
        // 多核处理,插DPC,把其它CPU全挂在一个自旋锁上,然后再 Hook
        //
        KeInitializeSpinLock(&g_SpinLock);
        for (i = 0; i < sizeof(g_Dpcs) / sizeof(KDPC); ++i) {
            KeInitializeDpc(&g_Dpcs[i], DpcRoutine, NULL);

作者  | 2012-2-10 17:19:01 | 阅读(1886) |评论(0) | 阅读全文>>

直接利用DAO来创建、读写Access文件

2011-10-8 15:34:35 阅读712 评论0 82011/10 Oct8

直接利用DAO来创建、读写Access文件,总的说来,对比上篇《直接通过ODBC读、写Excel文件》来讲,要简单一些。在下面的示例中,我们将用到两种方法:SQL和DAO类函数来混合实现它们,这样做的目地,我想可以使大家更加方便灵活的运用它们来完成你想要做的东西。在示例程序中默认指定创建数据库名为:Demo.mdb,内部表名为:DemoTable,写入两个字段:名字和年龄,采用和上一篇读写Excel类似的操作,你也可以根据自己需要来动态改变它们。示例程序运行界面如下所示:

作者  | 2011-10-8 15:34:35 | 阅读(712) |评论(0) | 阅读全文>>

直接通过ADO操作Access数据库

2011-10-8 15:29:56 阅读748 评论0 82011/10 Oct8

原文:http://www.vckbase.com/document/viewdoc/?id=496

我在《VC知识库在线杂志》第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读、写Excel表格文件”和“直接通过DAO读、写Access文件”,先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privide

作者  | 2011-10-8 15:29:56 | 阅读(748) |评论(0) | 阅读全文>>

清除 PE 文件里的数字签名

2011-10-6 17:43:46 阅读1454 评论1 62011/10 Oct6

在 PE 可选头的数据目录里,DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY] 保存着数字签名的位置和大小。要清除数字签名,只要根据这些信息删除掉数字签名,再把字段清零就可以了。
关键代码如下:

先把文件映射到内存:

代码:
__forceinline LPVOID MapPeFile(LPCWSTR pwzFile, PLARGE_INTEGER lpFileSize)
{
if (StrSafeLen(pwzFile) <= 0) // 如果传入的文件路径为空
return NULL;

HANDLE hFile = CreateFileW(pwzFile,

作者  | 2011-10-6 17:43:46 | 阅读(1454) |评论(1) | 阅读全文>>

驱动改名,设备名联动

2011-8-15 9:23:55 阅读932 评论1 152011/08 Aug15

#include <ntddk.h>

void GetLastName(WCHAR * lpszOutString,const WCHAR* lpszInString)
{
int i,j;

j=0;
for(i=wcslen(lpszInString)-1;i>=0;i--)
{
if(lpszInString[i]==L'\\')
{
j=i;

作者  | 2011-8-15 9:23:55 | 阅读(932) |评论(1) | 阅读全文>>

自己创建IRP并下发

2011-8-9 11:19:14 阅读1158 评论0 92011/08 Aug9

BOOLEAN
SKillStripFileAttributes(
    IN HANDLE  FileHandle
    )
{
    NTSTATUS        ntStatus = STATUS_SUCCESS;
    PFILE_OBJECT    fileObject;
    PDEVICE_OBJECT  DeviceObject;
    PIRP            Irp;
    KEVENT          event;
    FILE_BASIC_INFORMATION  FileInformation;

作者  | 2011-8-9 11:19:14 | 阅读(1158) |评论(0) | 阅读全文>>

WDK + VC6 搭建驱动开发环境

2011-6-30 16:18:49 阅读3202 评论0 302011/06 June30

网上找了很多资料,都不好使。相信有很多像我一样偏好VC6.0的家伙,最新的WDK真的用不了么?必须可以!!!

    开始之前要一定要明确一件事情,单独使用WDK+记事本就可以开发驱动,和VC的编译器耗无关系,而使用VC的唯一目的,就是把它当作超级记事本,这样可以省去自己维护Makefile的麻烦,并且拥有IDE的其他各种便捷。


1.安装好VC6和DWK,先后顺序无关。
    从开始菜单找到WDK的程序目录,进入“Windows XP Checked Build Environment”,输入命令"build",此时WDK将会把自己进行编译,大约需要1分钟。

作者  | 2011-6-30 16:18:49 | 阅读(3202) |评论(0) | 阅读全文>>

文件占坑

2011-6-28 13:56:54 阅读907 评论1 282011/06 June28

DuplicateHandle函数学习到的知识。

其实我们在使用函数GetCurrentProcess获得的句柄值是虚假的句柄值。如果我们需要在进程之间通信使用这些句柄的话,就需要将其转换。

下边的是MSDN

作者  | 2011-6-28 13:56:54 | 阅读(907) |评论(1) | 阅读全文>>

获得exe文件的公司名

2011-6-25 14:13:01 阅读727 评论0 252011/06 June25

CString CProcessDlg::GetFileCompanyName(CString szTemp)
{
    struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
    } *lpTranslate;

CString stroutCompanyName;//公司名字
    LPTSTR lpstrFilename = (LPTSTR)(LPCTSTR)szTemp;
    DWORD dwHandle = 0;
    DWORD dwVerInfoSize = GetFileVersionInfoSize(lpstrFilename, &dwHandle);

作者  | 2011-6-25 14:13:01 | 阅读(727) |评论(0) | 阅读全文>>

ObjectHook

2011-6-20 16:53:41 阅读1499 评论1 202011/06 June20

其实这东西很多大牛多玩腻了的东西,看下论坛上比较少这类的,就来献献丑,科普一下 大牛们直接
可以飘过,这东西主要是自我复习一下OBJECT的一些知识,技术这东西久了不弄容易忘记,所以
拿出来跟和我一样菜的菜鸟们分享一下。如果有不对的地方欢迎大家指正,这样对于自己也进步得
快点,多多交流,互相学习,水平才能提高得快。
   第一我们先看下OBJECT的组成 主要是3部分 如下图
              
         |---------| 
         |

作者  | 2011-6-20 16:53:41 | 阅读(1499) |评论(1) | 阅读全文>>

SSDT HOOK 模板

2011-6-12 19:28:43 阅读1049 评论0 122011/06 June12

#include <ntddk.h>
#include <stdio.h>

#pragma pack(1)
typedef struct ServiceDescriptorEntry{
 unsigned int *ServiceTableBase;
 unsigned int *ServiceCounterTableBase;
 unsigned int NumberOfServices;
 unsigned char *ParamTableBase;
}SSDT_Entry;

作者  | 2011-6-12 19:28:43 | 阅读(1049) |评论(0) | 阅读全文>>

去除内存写保护

2011-6-12 11:42:16 阅读715 评论0 122011/06 June12

486系列处理器出现后, 控制寄存器CR0中添加了写保护(Write Protect, WP)位. WP位控制是否允许处理器写入标记为只读属性的内存页. 该位设置为0的话, 会禁用内存的保护机制.
__asm 
push   eax 
mov    eax, cr0 
and    eax, 0FFFEFFFFh 
mov    cr0, eax

作者  | 2011-6-12 11:42:16 | 阅读(715) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注