博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用C语言获取系统的sid信息?
阅读量:4140 次
发布时间:2019-05-25

本文共 1175 字,大约阅读时间需要 3 分钟。

      在Win7中,你可以在cmd中输入whoami/user来轻松获取sid信息,但是,要在程序中获得,该怎么做呢?如下(Windows API, 我服了你):

#include 
#include
#define MAX_NAME 256void ConvertSid(PSID pSid, LPTSTR TextualSid){ PSID_IDENTIFIER_AUTHORITY psia = GetSidIdentifierAuthority(pSid); DWORD sidLen = sprintf(TextualSid, TEXT("S-%lu-"), SID_REVISION); sidLen += sprintf(TextualSid + strlen(TextualSid), TEXT("%lu"), psia->Value[5]); int i = 0; int subAuthorities = *GetSidSubAuthorityCount(pSid); for (i = 0; i < subAuthorities; i++) { sidLen += sprintf(TextualSid + sidLen, TEXT("-%lu"), *GetSidSubAuthority(pSid, i)); }}void GetLocalSid(LPTSTR szSid){ char szUserName[MAX_NAME] = {0}; DWORD nameSize = sizeof(szUserName) ; GetUserName(szUserName, &nameSize); char szUserSid[MAX_NAME] = {0}; char szUserDomain[MAX_NAME] = {0}; DWORD sidSize = sizeof(szUserSid); DWORD domainSize = sizeof(szUserDomain); SID_NAME_USE snu; LookupAccountName( NULL, szUserName, (PSID)szUserSid, &sidSize, szUserDomain, &domainSize, &snu ); ConvertSid(szUserSid, szSid); }int main(){ char szSid[MAX_NAME] = {0}; GetLocalSid(szSid); printf("%s\n", szSid); return 0;}

 

转载地址:http://rirvi.baihongyu.com/

你可能感兴趣的文章
windows + tomcat 部署web服务 http 改为https访问方法
查看>>
Windows系统下Apache 服务器启动以及过程中产生问题的解决办法
查看>>
Oracle服务说明
查看>>
异常收集(三):Missing artifact com.oracle:ojdbc6:jar:1.0 两种解决方案
查看>>
异常收集(四):Plugin execution not covered by lifecycle configuration
查看>>
异常收集(五):Io 异常: The Network Adapter could not establish the connection
查看>>
JSP中的转义字符
查看>>
SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
Linux 操作指令收集
查看>>
CentOS 7下卸载MySQL方式(转)
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
基于S5PV210的uboot移植中遇到的若干问题记录(一)DM9000网卡移植
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>