
C++ 客户端程序
文章平均质量分 77
nui111
这个作者很懒,什么都没留下…
展开
-
防止最大化遮盖任务栏
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam){ LRESULT lRes = 0; BOOL bHandled = TRUE; switch (uMsg) { case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, b...原创 2019-11-05 15:36:53 · 478 阅读 · 1 评论 -
托盘在XP下不能显示tooltip,在Vista和Windows7下正常
奇怪的问题,想了很多可能的理由,最终的答案竟然是一开始就被我否认了的一种可能!! 问题现象:调用Shell_NotifyIcon,在Vista和Windows 7上可以正常显示托盘的Balloon ToolTips,但在XP下却不行,而且函数返回值和GetLastError都正常。 问题的原因:1、有问题的系统版本声明:[cpp] view plaincop转载 2014-12-18 13:34:53 · 446 阅读 · 0 评论 -
修改IE首页的几种办法
1、最简单的办法。直接修改HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下面Start Page的值为http://www.dodonew.com/。2、比较隐蔽的办法,也是流氓软件经常使用的办法之一。修改HKEY_CLASSES_ROOT\CLSID\{871C5380-42A0-1069-A2EA-原创 2014-12-25 20:16:11 · 569 阅读 · 0 评论 -
关于添加共享资源的方法
转载自msdn:ms-help://MS.MSDNQTR.v90.chs/netshare/fs/netshareadd.htmThe following code sample demonstrates how to share a network resource using a call to theNetShareAdd function. The code sample fi转载 2014-12-25 21:58:29 · 620 阅读 · 1 评论 -
将枚举类型转化为字符串
有的时候我们喜欢使用一些外部的文件保存管理一些配置信息,这些配置文件大多都是文本格式例如ini,xml等,这样方便编辑和管理。因此在使用的过程中必然会遇到各种字符串转换问题。最常见的便是将字符串的数字转换为对应的整形(integer)或者浮点(float),如果遇到枚举类型,可能便会想当做是整形来处理,但觉得不是特别理想。如果能有办法直接转换为枚举会方便很多。案例一个简单的配置文件原创 2014-12-10 23:46:19 · 2421 阅读 · 1 评论 -
如何通过map文件轻松找到崩溃的代码行
首先必须生成程序的 MAP 文件。什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。好吧,既然 MAP 文件如此神奇,那么我们应该如何生成它呢?在 VC 中,我们可以按下 Alt+F7 ,打开“Project Settings”选项页转载 2015-01-17 16:41:55 · 555 阅读 · 0 评论 -
LogonUser函数空密码的问题
LogonUser()是用来判断用户登录Windows操作系统的。但是,当密码为空的时候,LogonUser会返回FALSE。经过研究,发现如果密码为空的时候,GetLastError会返回1327错误,也就是说,Windows不允许LogonUser以空的密码来登录。所以,登录的代码需要更新一下:if (LogonUser(account.strUsername, accou转载 2015-01-05 10:22:18 · 2520 阅读 · 1 评论 -
批处理修改组策略或注册表给guest用户限权允许远程关机
利用Shutdown远程关机都要给guest用户限权,怎么用批处理或注册表来实现??图形操作如下:单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,然后单击“确定”,即可打开组策略编辑器。 2、在“组策略”窗口的左侧窗格中逐级展开“计算机配置”→“Windows 设置”→“安全设置”→“本地策略”→“用户权利指派”。如图1所示。 3、在“组策略”窗口的右侧转载 2015-02-09 17:04:34 · 3655 阅读 · 4 评论 -
关于使用WMI获取杀毒软件信息
使用WMI获取杀毒软件信息时需要区分不同的操作系统,不然 会获取不到杀毒软件的信息。以下范例是针对Vista之后版本的://利用WMI获取杀毒软件信息#include "stdafx.h"#include "Antivirus.h"#include "comutil.h"#include "atlbase.h"#pragma comment(lib, "wbemuu原创 2015-02-25 16:48:34 · 3289 阅读 · 0 评论 -
获取指定进程的路径-支持32位和64位
项目中 需要获取指定进程的运行路径,使用GetModuleFileNameEx无法使用32位程序获取64位程序的路径,GetProcessImageFileName可以获取32位和64位程序的进程全路径,但GetProcessImageFileName获取的路径都是包含设备名的路径,因此我们还要转换成一下.BOOL GetProcessFullPath(DWORD dwPID, T原创 2015-03-15 15:27:17 · 1412 阅读 · 0 评论 -
rock c语言实现的带通配符匹配算法
‘?’代表任意单个字符,‘*’代表任意0个或多个字符。常用于文件的搜素匹配。bool MatchWithAsteriskW(wchar_t* str1,wchar_t* pattern){ if(str1 == NULL) returnfalse; if(pattern == NULL) returnfalse; int转载 2014-12-25 22:24:56 · 751 阅读 · 0 评论 -
sprintf_s 在release下仍然会崩溃
开启VS2010的警告之后,将项目中所有的sprintf都换成了sprintf_s,以为这样的话程序在字符串copy时就安全了,结果在实际环境中程序还是崩溃了。自己在VS中尝试了这样的代码:char teststr[10] = {0};char inputstr[21] = {"12345678901234567890"};sprintf_s(teststr,10,"%s"原创 2015-01-14 12:56:56 · 1514 阅读 · 0 评论 -
使用PageHeap.EXE或GFlags.EXE检查内存越界错误(转)
我推荐使用PageHeap.Exe和Gflags.Exe,主要的原因还是因为当有人问内存越界的错误如何查出来的时候,国外的朋友经常会推荐这两个工具(highlyrecommend)。我用过之后,也觉得有些时候用用还是有好处的。PageHeap.Exe将针对某个指定的应用程序启用PageHeap标志,从而自动监视所有的malloc、new和heapAlloc的内存分配,找出内存错误。Page转载 2015-01-09 11:58:34 · 740 阅读 · 0 评论 -
C++中四种强制类型转换的区别
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。1、static_cast用法:static_cast (expression)该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:(1)用于类层次结构中基类和派生类之间指针或引用的转转载 2015-01-08 18:37:06 · 421 阅读 · 0 评论 -
不常见的自启动方式,杀毒软件也很难查出!!!
这里就说些不常见的启动很多系统工具 也很难查得出来的一: 注册表相关===============================================有部分程序可以将自身在注册表加载的位置进行隐藏,常见的操作有两种方式:1、对指定的注册表分支、键值设置权限(Acls)导致当前用户无权查看这些分支、键值的内容,自然无法获取病毒信息了。2、使用超原创 2014-12-18 21:41:31 · 829 阅读 · 0 评论 -
std::regex_error
Regex exceptionObjects of this exception type are thrown by the elements of the regex library.It inherits from the standard exception runtime_error, and has a special public member function,转载 2014-12-19 12:40:32 · 2958 阅读 · 0 评论 -
删除字符串中的空格
删除全部空格 char *trim_all(char *s){ char *p=s, *sa=s; while (*p) { if(*p!=' ') *s++ = *p; p++; } *s=0; return sa;} 删除前面和后面的空格char *strtr转载 2014-12-04 09:09:49 · 694 阅读 · 0 评论 -
关于使用__FILE__和__LINE__的宏定义来打印日志
最近在代码检视时被同事鄙视了,因为打印log时使用__FILE和__LINE__作为输入参数。 每次打印Log时均需要些这些参数,调用者麻烦,可以使用宏定义来代替。 代码检视结束后,我就查询了相关的资料,将打印的地方使用宏替换掉了。具体如下: 首先定义宏:#define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) #d原创 2015-01-10 22:05:49 · 1092 阅读 · 0 评论 -
C++实现的字符串模糊匹配
C++基本没有正则表达式功能,当然像Boost里提供了正则。本文来源于博客园园友的一篇文章,请看:C/C++ 字符串模糊匹配很早之前就看过这篇文章,原作者的需求很明确、代码实现也很好。之所以又写这篇文章,是因为原作者只介绍了在Linux系统下直接调用系统函数fnmatch即可实现,而没有考虑在Windows在的使用。本人这周看了下Google-glog代码,恰巧发现了一个类似fnm转载 2014-12-22 21:58:00 · 3271 阅读 · 0 评论 -
Regex - C++11, 6 of n
1) Raw stringR"delim(...)delim", where delim is a character sequence of at most 16 basic characters except the backslash, whitespace and parentheses.2) Note regex algorithm is greedy3) Main in转载 2014-12-07 20:17:31 · 732 阅读 · 3 评论 -
使用WSUS服务器配置自动更新方法简介
为方便广大用户及时自动更新,现架设与微软补丁服务器同步的WSUS服务器供广大师生使用。WSUS服务器适用更新的操作系统:winxp、winserver2003、winserver2008、vista、win7WSUS服务器适用更新的软件有:reportview2005、2008;visualstuio2005、2008;office2002/xp、2003、2007;sdk compone转载 2015-01-13 13:20:05 · 5308 阅读 · 0 评论 -
使用WIN系统自带wmi测试工具查询杀毒软件信息
1.在“运行”中,输入“wbemtest.exe” 2.单击“连接”,在输入框中输入ROOT\\SecurityCenter23.点击“枚举类别”,选择“递归” 4.点击“查询”,在输入框中输入要测试的WQL语句:SELECT * FROM AntiVirusProduct原创 2015-03-03 11:21:35 · 4999 阅读 · 1 评论 -
动态设置mfc对话框的标题
BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); ...... SetWindowText("My Title"); return TRUE; // return TRUE unless you set the focus to a control}其次还可以用API函数来完成:原创 2015-07-07 21:13:44 · 1174 阅读 · 0 评论 -
获取电脑磁盘的剩余空间
代码如下: // testdisk.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){ ULARGE_INTEGER lpFreeBytesAvailableToC原创 2015-05-21 22:05:23 · 675 阅读 · 0 评论 -
关于多网卡时socket bind失效的问题
On Windows, a call to bind() affects card selection only incoming traffic, not outgoing traffic.Thus, on a client running in a multi-homed system (i.e., more than one interface card), it's the转载 2015-10-04 21:08:24 · 980 阅读 · 0 评论 -
关于使用不带条件的大括号解析程序析构报错的问题
最近在项目需要添加COM组件的使用,程序入口处方法如下:BOOL CTestApp::InitInstance(){ // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or la原创 2015-10-22 18:23:56 · 757 阅读 · 0 评论 -
判断当前用户是否属于管理员权限的组
The following example shows checking a token for membership in the Administrators local group.BOOL IsUserAdmin(VOID)/*++ Routine Description: This routine returns TRUE if the caller'sproces转载 2015-09-21 11:40:24 · 2659 阅读 · 0 评论 -
自动导入数字签名
#include #pragma comment(lib,"Cryptui.lib")void test(){ CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc;memset(&importSrc, 0, sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO));importSrc.dwSize = size转载 2015-09-22 22:58:34 · 989 阅读 · 0 评论 -
目前没有可用的登录主机处理登录请求1311
微软工程师在处理问题troubleshooting的时候,常常要求用户抓包上传日志,但有些环境涉密,不允许这么做,那么该如何处理呢?其实尝试在命令行状态中(DOS窗口),根据命令行返回的error code,就可以很容易搜索到解决方法。比如,像是这个例子”1311 目前没有可用的登录主机处理登录请求 “SQL 客户端程序无法连接?我的用户又找到我了。ou管理员抱怨说前些天还没有问题啊,不知转载 2015-10-27 11:32:15 · 11392 阅读 · 0 评论 -
sqlite数据库在程序打包之前清除所有表中的数据
程序中使用sqlite数据库存储数据,每次打包程序之前都要查看一下数据表中是否有垃圾数据,手动清除,很麻烦,所有编写了一个自动清除sqlite数据库中的所有表的数据的类代码如下,欢迎指正:#pragma once#include using namespace std;//数据库中表的名称extern string g_tablename;//数据库中表的内容exter原创 2016-02-14 14:42:22 · 1043 阅读 · 0 评论 -
关于NSIS打包的一些处理
1.关于修改安装包的欢迎页上的最上面的caption XPStyle on Caption " 客户端" Name "客户端"2.怎样设置安装进度条不显示文件的详细信息在工具开始处添加ShowInstDetails nevershowShowUninstDetails nevershow在section中开始处添加 SetDetailsP原创 2016-03-24 12:51:31 · 1656 阅读 · 1 评论 -
关于多网卡的数据包传输问题
An increasingly common configuration for network hosts is to be multihomed with multiple network interfaces. A multihomed host provides enhanced connectivity because it can be simultaneously conne转载 2015-10-04 20:56:45 · 1046 阅读 · 0 评论 -
Network Awareness in Windows Vista and Windows 7
How to create network-aware applications that run on Windows Vista and Windows 7.Note To download the complete code samples discussed in this topic, seeMicrosoft Windows Network List Manager (NLM转载 2015-10-17 22:25:47 · 1267 阅读 · 0 评论 -
VS DLL修改lib生成路径
在在Dll中,经常碰到需要修改lib文件生成路径,这样方便我们调试Dll:对着项目右击属性默认情况下是$(OutDir)$(TargetName).lib“添加你想要生成的路径”$(TargetName).lib例如:D:\Documents\Visual Studio 2013\Projects\Mofll\Mofll\$(TargetName).lib这转载 2015-09-02 14:02:40 · 530 阅读 · 0 评论 -
查找当前程序目录中以32和64结束的exe程序的名称
最近项目中用到将32位和64位的exe程序打包成一个安装包,根据执行的系统平台执行不同的exe程序。所以在这个两个程序中需要加一个程序来判断平台并调用32或者64位的exe程序。 代码如下:// Exec32Or64Program.cpp : Defines the entry point for the console application.//#incl原创 2015-05-19 21:47:52 · 455 阅读 · 0 评论 -
读取USBHDD(USB移动硬盘信息)序列号的代码
读取USB HDD(USB移动硬盘)序列号的代码,型号及分位。使用Visual Studio 2010编译成功。代码使用了CrystalDiskInfo中的代码smartata.c中相关代码:如下的连接解释了为何使用scsi的相关代码,需要USB IC的数据转换。实现代码如下: // DiskInfo.cpp : Defines the entry point for th转载 2015-07-07 22:27:59 · 1266 阅读 · 0 评论 -
服务程序中侦测用户logon和logoff消息
#include #include #include #include "sample.h"#pragma comment(lib, "advapi32.lib")#define SVCNAME TEXT("SvcName")SERVICE_STATUS gSvcStatus; SERVICE_STATUS_HANDLE原创 2015-08-24 21:30:23 · 777 阅读 · 0 评论 -
硬件检测:安装、停用
简介现在对于IT的安全来说,热插拨设备是个很大的威胁。在这篇文章中,我将试着开发一个用户应用程序来检测本机系统上的设备改变。例如:插入一个USB设备、Ipod、USB无线网卡等等。这个程序同样也可以停用任何支持插拔的设备。在文章的后面,我会简述一下程序的工作原理和它的局限性。怎么来检测硬件设备的改变?事实上,Windows操作系统会对上层程序发送WM_DEVICECHANGE消转载 2015-08-24 21:46:02 · 463 阅读 · 0 评论 -
Windows系统版本判定那些事儿
前言本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题。在Win8和Win10出来之后,在获取系统版本时,可能很多人都碰到了类似的问题,为什么以前工作得很好的API,突然开始说谎了? 我们一般怎么获取系统版本我想用的最多的可能就是这两个API了吧。DWORD WINA转载 2015-07-19 17:30:45 · 699 阅读 · 0 评论 -
SC Create 创建一个Windows系统服务
C:\Users\sophiaX>sc描述: SC 是用于与服务控制管理器和服务进行通信的命令行程序。用法: sc [command] [service name]... 选项 的格式为 "\\ServerName" 键入 "sc [command]"可以获得有关命令的进一步帮助 命令:转载 2015-07-20 15:46:39 · 774 阅读 · 0 评论