vc++学习(六)——代码学习
这几天一直在看计算机方面的书,准备考试软件工程师,但是看了看书,太恐怖了,很多我都不会,但是里面提醒了一个内容就是必须会使用一种语言(c++,java等)来编写程序。刚好今天看了一个杂志,里面有一片文章很好,我就开始学习了,所以就写了仿效写了下面的内容。
该工具是用来判断你是否具有管理员权限的工具,代码我就贴在这里。
#include stdio.h
#include windows.h
BOOL IsAdmin(void)
{
HANDLE hAccessToken;
BYTE *InfoBuffer;
PTOKEN_GROUPS ptgGroups;
DWORD dwInfoBufferSize;
PSID psidAdministrators;
SID_IDENTIFIER_AUTHORITY sidNtAuthority=SECURITY_NT_AUTHORITY;
UINT i;
BOOL bRet=FALSE;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY, hAccessToken))
InfoBuffer=new BYTE[1024];
if(!InfoBuffer)
goto cleanup;
bRet=GetTokenInformation(hAccessToken,TokenGroups,InfoBuffer,1024, dwInfoBufferSize);
CloseHandle(hAccessToken);
if(!bRet)
goto cleanup;
if(!AllocateAndInitializeSid( sidNtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0,0,0,0,0,0,
psidAdministrators));
goto cleanup;
bRet=FALSE;
ptgGroups=(PTOKEN_GROUPS)InfoBuffer;
for(i=0;i ptgGroups- GroupCount;i++)
{
if(EqualSid(psidAdministrators,ptgGroups- Groups[i].Sid))
{
bRet=TRUE;
break;
}
}
FreeSid(psidAdministrators);
cleanup:
if(InfoBuffer)
delete InfoBuffer;
return bRet;
}
main()
{
printf("+------------------------------------+/n");
printf("| ChkAdinistrator v0.1 |/n");
printf("| Write By AloneSword |/n");
printf("| 2005-9-14 |/n");
printf("| thx to sinister |/n");
printf("| http://blog.csdn.net/alonesword/ |/n");
printf("+-----------------------------------+/n");
if(IsAdmin) printf("You have got the Administrators rights./n");
else printf("Sorry,administrator is not you./n");
}
C++ Primer Plus 第6版 读书笔记(2)第2章 开始学习 C++ C++是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序详细而全面地阐述了 C++的基本概念和技术,并专辟一章介绍了C++11新增的功能。
C++ STL学习之【反向迭代器】 适配器模式是 STL 中的重要组成部分,在上一篇文章中我们学习了 容器适配器 的相关知识,即 stack 与 queue,除了 容器适配器 外,还有 迭代器适配器,借助 迭代器适配器,可以轻松将各种容器中的普通迭代器转变为反向迭代器,这正是适配器的核心思想
C++ STL学习之【容器适配器】 适配器(配接器)是 STL 中的六大组件之一,扮演着轴承、转换器的角色,使得 STL 中组件的使用更为灵活,比如 栈和队列 就是属于适配器而非容器,以及神秘的反向迭代器也属于适配器
C++ STL学习之【vector的模拟实现】 vector 是 STL 中的容器之一,其使用方法类似于数据结构中的 顺序表,得益于范型编程和 C++ 特性的加持,vector 更强大、更全能;在模拟实现 vector 时,还需要注意许多细枝末节,否则就很容易造成重复析构及越界访问
C++ STL学习之【vector的使用】 vector 是表示可变大小数组的序列 容器,其使用的是一块 连续 的空间,因为是动态增长的数组,所以 vector 在空间不够时会扩容;vector 优点之一是支持 下标的随机访问,缺点也很明显,头插或中部插入效率很低,这和我们之前学过的 顺序表 性质很像,不过在结构设计上,两者是截然不同的
C++ STL学习之【string类的模拟实现】 string 本质上就是一个专注于存储字符的顺序表,使用起来很方便;但在模拟实现 string 时,有许多值得注意的点,下面就来看看 string 类是如何诞生的吧
C++ STL 学习之【string】 STL 是 C++ 的重要组成部分,由六大部分构成:伪函数、空间配置器、算法、容器、迭代器 和 配接器,其中各种各样的 容器 可以很好的辅助我们写程序,比如今天要介绍的 string,有了它之后,我们对字符串的操作就能变得行云流水
相关文章
- C++STL剖析(二)—— vector的概念和使用
- c++通讯录管理系统
- 混合编程:如何用python11调用C++
- 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换
- C++-STL-vector:vector作为函数参数、返回值
- 清华大学C++课程学习笔记——第七章 继承和派生
- 从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态
- C++学习笔记_13 双向链表和链表模板 2021-05-06
- C++学习笔记_12 单向链表和单向链表模板 2021-04-29
- C++学习笔记_10 异常处理 2021-04-27
- C++学习笔记_06 深拷贝和浅拷贝 2021-04-19
- 格雷码编解码学习(一):格雷码编码原理与C++代码实现
- c++用tinyxml2读xml文件,转化为字节码,解析并保存
- 传智播客 C/C++学习笔记 指针3 理解指针必须与内存四区相结合
- 传智播客 C/C++学习笔记 二级指针作为输出参数以及空间的释放
- C++中的数据类型强制转换方法
- 2021-09-06 《C++ Primer》学习记录:第15章(1)
- C++学习笔记30,指针的引用(2)
- C++调用bat并实现传参
- C++删除容器数据
- C++学习路线
- C++多重继承下的指针类型转换
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- C++中的STL中map用法详解
- c/c++ linux下输出中文(宽字符)
- C++ 异常处理
- 【C++】函数重载的使用及原理