03 2011 档案
摘要:1.什么是Access TokenAccess Token用来标识一个用户,其中包括用户的SID和用户所属组的SID,还包括这个用户和所属用户组的所拥有的权限列表。当用户输入用户名和密码登陆到Windows之后,Windows会创建一个Acess Token,用来标识这个用户。在这个用户下创建的进程都将得到一份这个Access Token的备份。当进程需要访问一个可以加密的对象(如文件,事件等)时,windows利用这个Access Token来跟对象的Security Descriptor进行比较,以确认这个进程是否有权限来访问这个对象。(关于SID和Security Descriptor请
阅读全文
摘要:1,一个session中可以拥有多个winstation,一个winstation必然属于某个session,且无法更换。2,所有winstation的函数,包括OpenWindowStation,CreateWindowStation,EnumWindowStations等等,均仅限于调用Process的primary token的session。3,一个process仅对应一个session,也即其primary token的session。更简单的方法是ProcessIdToSessionId。当然也可以通过查询primary token的方法获得。一个process的thread可以拥
阅读全文
摘要:用法: prog.exe address1:port1 address2:port2程序将从本地端口的port1接收的数据发往 address1:port1, 同时address1:port1发出的数据将转发会原始的发送者。#ifndef __WIN32__#include<time.h>#include<errno.h>#include<fcntl.h>#include<unistd.h>#include<signal.h>#include<sys/types.h>#include<netinet/in.h>
阅读全文
摘要:#include<stdio.h>#include<assert.h>#include<windows.h>#defineLOCK_READ0#defineLOCK_WRITE1classrwlock{public:rwlock();~rwlock();public:voidlock(intdirect);voidunlock(intdirect);voidlock_exclusive(void);voidunlock_exclusive(void);voidwrlock(){lock(LOCK_WRITE);}voidwrunlock(){unlock(L
阅读全文
摘要:HANDLE hToken;TOKEN_PRIVILEGES tkp;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);tkp.PrivilegeCount=1;tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);AdjustTokenPrivileges(hToken,FALSE,&
阅读全文
摘要:1、对于CJK(多字节编码)的环境(泰文,日文,韩文,中文),CP_ACP与CP_OEMCP没有区别。2、对于非 CJK(单字节编码)的环境这两个代码页不同1)对应的实际代码页不同,例如English-US的环境,ACP对应1252,OEMCP而437。2)一个字节能表示的数值范围是(0-255),对于小于128的编码,437和1252对应的字符是一样的。3)对于大于128的编码,是不一样的,有可能有些OEM字符(大于128的编码)在437中不存在,有些ASCII(大于128的编码)字符在1252中不存在。4)相同的编码,对应的字符有可能不同。5)同理,相同的字符对应的编码有可能不同。3、wi
阅读全文
摘要:rem exe文件签名signtool.exe sign /s "My" /n "Beijing Cybervision Co., Ltd" /t "http://timestamp.verisign.com/scripts/timstamp.dll" "files\ClientSetup.exe"rem ################################rem 对sys文件进行签名 一定要先签名,再生产cat文件,顺序不能变remsigntool.exe sign /ac "MSCV-VS
阅读全文
摘要:void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );void _wsplitpath( const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *fname, wchar_t *ext );
阅读全文
摘要:list与vector分别通过链表和数组实现,所以list进行删除、插入操作时效率要比vector高出许多,而vector进行随机访问时要比list高,可是当进行顺序添加和顺序遍历时的效率两者的效率又是谁高呢?首先分析一下,对于顺序追加的操作,当vector预先分配的内存不够时,需要重新分配内存并复制对象,会对效率产生负面的影响;而list在每添加一个对象时都必须动态分配,每次动态分配内存都需要消耗系统CPU时间,这也是严重影响list效率的问题,所以list的运行效率反而可能比vector的还要低。而从另外一角度,list每个对象都必须有指向下一个对象的指针,所以每个对象都要比vector多
阅读全文
摘要:IP地址是TCP/IP网络层的寻址机制,MAC是802.3/Ethernet链路层的寻址机制,他们是不同层次的东西,不是并排关系,想一想数据发出去走到网线上最终还是变成了电脉冲,TCP/IP是没有物理层定义的,IP包最终变成电信号之前需要以太网来处理,当IP的数据给予了以太网之后,以太网就用属于它自己的寻址机制来处理以太帧,也就是用MAC地址。ppp属于广域网范畴,MAC是局域网范畴,按实际情况和环境就选用不同的协议,ppp支持的网络结构只能是点对点,mac支持多点对多点。以太网中用mac,远程的话就用ppp(如ADSL拨号,就是基于ppp的)。ppp是点到点协议 ,逻辑上相连的就一台设备因此
阅读全文
摘要:typedef BOOL (CALLBACK * PWTSQueryUserToken)(ULONG SessionId, PHANDLE phToken);BOOL DSCreateProcess(DWORD flags, DWORD session, LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreation
阅读全文
摘要:OSVERSIONINFOEX osif = {0}; osif.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); ::GetVersionEx((OSVERSIONINFO*)&osif); if (osif.dwMajorVersion == 6) //vista or 2008 { HANDLE hProcess = GetCurrentProcess(); HANDLE hToken = 0; if (OpenProcessToken(hProcess,TOKEN_ALL_ACCESS , &hToken)) { DWORD
阅读全文