zl程序教程

您现在的位置是:首页 >  后端

当前栏目

vc++学习(六)——代码学习

2023-09-27 14:26:38 时间
这几天一直在看计算机方面的书,准备考试软件工程师,但是看了看书,太恐怖了,很多我都不会,但是里面提醒了一个内容就是必须会使用一种语言(c++,java等)来编写程序。

这几天一直在看计算机方面的书,准备考试软件工程师,但是看了看书,太恐怖了,很多我都不会,但是里面提醒了一个内容就是必须会使用一种语言(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,有了它之后,我们对字符串的操作就能变得行云流水