![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows
文章平均质量分 88
华秋实
likeyockie@163.com
展开
-
VS2008-IDE-精选使用技巧
【内容全部摘自:http://www.cnblogs.com/xiachufeng/archive/2009/12/26/1632868.html】【只取其中需要的部分,并按照自己的认识根据使用频率和方便度给予星级评比~】一、怎样使用任务管理器? ☆☆☆ 假如我们开发的项目很大,在项目中有些代码没有完成,我们可以做一下标记,便于将来查找。 V转载 2011-11-15 19:27:47 · 1866 阅读 · 1 评论 -
删除目录
DeleteDirectory(sTempDir); 这个函数只能删除空目录,必须先删除里面的所有文件可以用WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp );函数删除包含文件的目录原创 2013-11-15 16:36:56 · 683 阅读 · 0 评论 -
【涨函数】PathRemoveFileSpec函数
athRemoveFileSpec函数的作用是将路径末尾的文件名和反斜杠去掉。例如,我们想获取EXE文件自身所在的文件夹,可以这样写:#include #include int main(int argc, char *argv[]){ char self[MAX_PATH]; GetModuleFileName(NULL, self, MAX_PATH)转载 2013-10-11 16:48:27 · 16719 阅读 · 0 评论 -
原子性加、减
InterlockedIncrement 实现数的原子性加InterlockedDecrement 实现数的原子性减InterlockedDecrement(&SomeInt)的执行过程大致是这样的{ __禁止其他线程访问 (&SomeInt) 这个地址 SomeInt --; move EAX, someInt; // 设定返回原创 2013-11-11 16:26:10 · 1500 阅读 · 0 评论 -
利用SH××函数(SHGetValue等)操作注册表
这一系列函数使用极其方便。使用它们操作注册表,一行代码解决HKEY系列函数几十行代码才能解决的问题。使用前需添加头文件和静态库文件。#include #pragma comment(lib, "shlwapi.lib")该系列所有函数声明如下:LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey, LPCSTR pszSubK转载 2013-11-28 19:04:39 · 7664 阅读 · 0 评论 -
MSBulid、IncrediBuild命令行接口实现自动化编译
一、MSBuild.exe实现自动化编译 .net Framework 提供的 MSBuild 工具可以方便我们在没有安装 Visual Studio 2005 的系统中编译项目解决方案,当然还可以与用相关工具组合进行 DailyBuild。先看一个例子,在解决方案目录(Test.sln)命令行输入下面的命令,将会自动编译解决方案。MSBuild.exe Test.s原创 2013-11-28 20:01:27 · 11044 阅读 · 1 评论 -
【总结】用户权限设置和进程权限提升
使用某些Windows API的时候需要提升进程的默认权限,例如RegRestoreKey需要SE_RESTORE_NAME 和SE_BACKUP_NAME 权限。在这种情况下,我们需要使用到一组Windows API提升进程权限。需要的函数有:1.OpenProcessToken2.LookupPrivilegeValue3.AdjustTokenPrivileges使用原创 2013-11-29 20:23:34 · 30059 阅读 · 9 评论 -
windbg检测句柄泄露(定位到具体代码)
1.构造一个测试用例原创 2014-10-30 01:12:49 · 11647 阅读 · 3 评论 -
vs2010自动展开选中当前代码所在的文件位置的功能
这个功能相当htool>>options>>projects and solutions>> track active item in solution explorer>>OK 保存即可原创 2014-09-16 13:29:12 · 17649 阅读 · 6 评论 -
弹出UAC窗口让用户提权
这里讨论的UAC 自我提权是指:先检查当前进程的等级,然后弹出窗口显示提醒用户进行授权。 最重要的代码: // 1.Check the current process's "run as administrator" status BOOL fIsRunAsAdmin; try原创 2015-03-30 20:26:58 · 4929 阅读 · 0 评论 -
UAC提升权限的细节
UAC提升权限的细节一,桌面运行一个程序时桌面运行一个程序时,Explorer调用ShellExecuteEx(),ShellExecuteEx()进一步调用CreateProcess()创建进程,由于这个进程需要管理员权限才能运行,于是CreateProcess返回ERROR_ELEVATION_REQUIRED (740);二,ShellExecuteEx接到这个返回值后ShellExecute转载 2015-05-28 20:40:17 · 3260 阅读 · 0 评论 -
Win7桌面移到其他磁盘方法
桌面文件是默认存储在C盘的。有时整个系统崩溃,无法进入系统只能重装的时候,将会导致桌面上的资料全部丢失,损失很大。另外,桌面文件放太多也导致电脑运行的非常缓慢。那么Win7系统桌面要怎么移动呢?在win7系统中每个帐户的桌面文件夹都是独立存在的,而且个人文件夹存放路径也可以修改,通常我们可以将他移动至D盘或者其他的盘。方法:更改注册表中桌面路径 步骤: 1. 先在d盘建一个文件夹,如建立一个De原创 2015-06-03 21:42:33 · 3294 阅读 · 0 评论 -
System权限下进程遇到的问题以及如何降权启动进程
一. 背景最近项目上踩到一个坑,即偶现升级过程中通过计划任务调起新安装包,程序安装到了错误的地方,并且桌面快捷方式等入口均没有生成,总而言之就是一个“自杀”行为。二. 原因通过测试发现原因:在有些情况下,通过计划任务(通过服务也是如此)调起的进程是system权限的。而在system权限下进程可能会遇到很多问题: 通过注册表或expand 环境变量等方法得到的系统目录并不是我们想要的,例如原创 2015-06-10 20:23:57 · 9003 阅读 · 2 评论 -
使用CreateProcess创建新的process 并返回process运行结束返回值
转自:http://blog.csdn.net/zgl7903/article/details/5975284转载这篇主要是记住:获得create的新进程运行结束时的返回值的方法如下:#include DWORD run_Execute(LPCTSTR lpszFile, LPCTSTR lpszParam){ DWORD exitCo转载 2012-03-05 17:14:01 · 9623 阅读 · 0 评论 -
Windows客户端性能分析与优化入门
两年前写的《客户端性能分析与优化入门》,分享出来,希望能得到大家的认可~地址:http://download.csdn.net/detail/yockie/9619239原创 2016-09-01 17:55:15 · 2039 阅读 · 2 评论 -
DLL string
1.一个原则:某个模块中分配的空间就应该由它来释放!比如说在dll中分配的空间就应由这个dll来释放,而不应该有main来释放,因为dll 中用来分配空间的环境可能和main中用来分配的环境不一样。关于这一点window核心编程中的dll里面进行了讲解,但是说真的我还是不明白为什么会这样。但是要记住这个原则!2.mian 中的如下语句:string str1("l10");stri转载 2013-10-15 18:29:07 · 1102 阅读 · 0 评论 -
WideCharToMultiByte和MultiByteToWideChar函数的用法
为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页由CP_ACP和C转载 2013-10-15 18:28:20 · 659 阅读 · 0 评论 -
[收集]内存对齐、sizeof、#pragma pack(n)
本文主要包括二个部分:第一部分:重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分:总结出VC中sizeof的主要用法。1、 sizeof应用在结构上的情况请看下面的结构:struct MyStruct{double dda1;char dda;int type};对结构MyStru转载 2011-11-25 23:06:06 · 981 阅读 · 0 评论 -
[收集]计算程序的运行时间
一、方法一C++的库函数中,已经给我们提供了这样的方法——clock(),我们可以使用它来计算程序的运行时间,闲话少说了,开门见山: 计算程序运行时间使用的知识点: 1clock_t 2clock() 3CLOCKS_PER_SEC 这些库函数、类型和常量都是定义在ctime库中的。下面就解释一下吧! 1clock_t数据类型,其实,当你打开time.h就知转载 2011-11-04 17:36:04 · 793 阅读 · 0 评论 -
[收集]unix/mac/dos-windows三种文本文件的格式的行尾区别
在项目程序中,用fgets()读一个文本文件,一行一行的读取,之前测试的所有的文件都没有问题,今天突然拿到一个文件测试时却出问题了,调试发现它并没有一行一行的读,但是用notepad++明明可以看到文件是一行一行的啊,又不是没有回车,纠结一会,发现这个错误的文件是mac格式的,关于unix/mac/dos-windows三种文本文件的格式的行尾区别,以下是搜索到的资料:不同系统间的行尾表示转载 2011-11-09 21:13:29 · 10649 阅读 · 0 评论 -
如何在vs2008中添加lib 静态库使用
方法1:在cpp文件中 加入 #pragma comment(lib,"XXX.lib")方法2:步骤1:Tools->options->projects and solutions->VC++ directories分别在包含文件,库文件填加了路径(这些路径只告诉编译器怎么找文件,没有说把那里面的文件加入工程,若不设置,编译报错:无法打开***文件) 步骤2:Proj转载 2012-03-17 19:48:10 · 15895 阅读 · 0 评论 -
Sleep(0)
Sleep(n)的作用是让当前线程睡眠n毫秒,以便执行其他线程,如果没有其他线程,那睡眠n毫秒后,继续执行。 而如果n=0,Sleep(0)是指CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程。 那么,Sleep(0)应该在那种情况下使用? 一般来说,如果当前线程比较耗时比较占CPU资源,可以在结尾处加上Sleep(0),转载 2012-03-20 22:24:30 · 1107 阅读 · 0 评论 -
[收集]ANSI字符与Unicode字符的互相转换
字符的问题真是令人头痛。。ANSI字符是单字节的,Unicode字符是双字节的,VC6.0默认是用ANSI字符的,而后来的7、8默认都是用Unicode字符。。导致字符的问题经常遇到,最好又不要强制类型转换(有时候结果不正确不说,这种转换会导致很多漏洞。。)。这次真是被逼急了,就上网找了点资料总结一下。。单字节字符或者字符串比如说有char*、string、LPCSTR(实际上就是char原创 2012-03-22 10:34:40 · 2564 阅读 · 0 评论 -
使用QueryPerformanceFrequency、QueryPerformanceCounter精确计时
一、QueryPerformanceFrequency()-基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。 二、QueryPerformanceCounter()-基本转载 2012-06-25 16:18:17 · 2917 阅读 · 0 评论 -
Windows API了解用户是否在使用鼠标或键盘
《编程之美》1.10的最后提到了一个问题,就是windows中什么api能了解用户是否在使用鼠标或键盘,或者发现用户在几秒之内没有鼠标、键盘的输入?网上搜索了一下资料,觉得大概有两种方法:(1)GetInputState函数原型: BOOL GetInputState(VOID);函数功能:该函数确定在当前线程的消息队列中是否有要处理的鼠标,键盘消息.注意事项:返回值指定是否发原创 2012-07-21 16:20:52 · 10849 阅读 · 2 评论 -
换行符乱谈(文本文件vs二进制文件)
搜一些资料的时候偶然看到了这篇博文(http://blog.csdn.net/dbzhang800/article/details/6430280),觉得讲的挺好的,故收藏下~ 另外,文章的排版和颜色都弄的挺好的,让人看着很舒服,学习~~使用 C 语言的 fopen 打开文件时,可以指定的 mode 有 12 个,其中 6 个包含 "b"使用转载 2013-01-09 21:59:53 · 2145 阅读 · 0 评论 -
【收集】系统文件夹路径的系统宏定义及意义,使用SHGetFolderPath API获得路径示例
获取系统文件夹路径方法:(1)SHGetKnownFolderPath Function with KNOWNFOLDERID(2)SHGetFolderPath Function with CSIDLSHGetFolderPath:已过时。通过CSIDL值获取系统文件夹的路径。注意:Windows Vista中,这仅仅是一个对SHGetKnownFolderPat原创 2013-06-18 11:33:58 · 5173 阅读 · 0 评论 -
设置VS2008生成的EXE文件的版本号等信息
(1)假如你用VS2008 写的Win32 SDK程序,那么请进行如下操作:在"Solution Explorer"里,右键点击项目,然后在弹出菜单内指向"Add",在弹出子菜单内选择"Resource"(资源),然后会弹出"Add Resource"对话框,然后点"Version",然后点"New",这时会添加一个版本描述资源,exe文件的任何信息都在此描述。 (2)转载 2013-07-02 17:32:49 · 10551 阅读 · 0 评论 -
Windows同步API—— Mutex
互斥互斥量的作用是保证每次只能有一个线程获得互斥量而得以继续执行,使用CreateMutex 函数创建:HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes,// 安全属性结构指针,可为NULLBOOL bInitialOwner,//是否占有该互斥量,TRUE:占有,FALSE:不占有LPCTSTR转载 2013-08-01 16:10:50 · 3567 阅读 · 0 评论 -
(好~)windows下的线程进程同步方法
Windows 临界区,内核事件,互斥量,信号量。 临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结。 一. 临界区 CRITICAL_SECTION:适用范围:它只能同步一个进程中的线程,不能跨进程同步。一般用它来做单个进程内的代码快同步,效率比较高。相关结构:CRITICAL_SECTION _c转载 2013-08-01 16:22:33 · 1679 阅读 · 0 评论 -
SHELLEXECUTEINFO 和 ShellExecuteEx的使用
在日常工作中用到的一些知识,很久没有总结过,前几日参加一个会议,很是无聊。自己思索着自己这两年来所做过的东西,写着写着居然也写下了100个知识点。想把它一条一条总结下来,动笔总不是很容易。就拿这篇文章作为第一篇。 很多东西取之于网络,也有一些自己的心得。才疏学浅,就当一个知识梳理的过程吧。 第一篇 SHELLEXECUTEINFO 和 ShellExe转载 2013-10-11 21:16:31 · 7086 阅读 · 0 评论 -
使用InternetCrackUrl分解url
void CrackUrl(){ URL_COMPONENTS uc; char Scheme[1000]; char HostName[1000]; char UserName[1000]; char Password[1000]; char UrlPath[1000]; char ExtraInfo[1000]; uc.dwS转载 2013-10-11 20:15:07 · 8850 阅读 · 0 评论 -
strncpy_s和_TRUNCATE
首先strncpy_s的函数原型如下:errno_t strncpy_s(char *strDest,size_t numberOfElements,const char *strSource,size_t count);参数就不做介绍了,容易看懂。下面就几种情况介绍。主要涉及目标内存大小numberOfElements、拷贝的大小count以及源字符串的大小src转载 2013-10-15 18:29:31 · 3664 阅读 · 0 评论 -
vs内存泄露检测方法
方法一、通过内存状态比较1、功能:可以检测某段代码间的内存泄露.2、描述: 若要确定代码中某一部分是否发生了内存泄漏,可以在该部分之前和之后对内存状态拍快照,然后使用 _CrtMemDifference 比较这两个状态: _CrtMemState s1, s2, s3; _CrtMemCheckpoint(&s1); // memory allocations take plac转载 2017-03-22 12:27:02 · 1550 阅读 · 0 评论