一段获取当前用户Sid的小代码

本文介绍如何使用C++代码获取当前用户的SID,通过OpenProcessToken和GetTokenInformation等API实现,提供完整示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有朋友问我怎么取得当前用户的Sid,其实很简单,用GetTokenInformation...

还是直接看代码吧:
  1. #include "stdafx.h"
  2. #include <windows.h>
  3. #include <Sddl.h>

  4. #define MAX_NAME 256

  5. BOOL GetCurrentUserForSID (VOID)
  6. {
  7.     DWORD dwSize = 0, dwResult = 0;
  8.     HANDLE hToken;
  9.     PTOKEN_USER pUserInfo;

  10.     LPSTR    StringSid;

  11.     if (!OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &hToken ))
  12.         return FALSE;

  13.     if(!GetTokenInformation(hToken, TokenUser, NULL, dwSize, &dwSize))
  14.     {
  15.         dwResult = GetLastError();
  16.         if( dwResult != ERROR_INSUFFICIENT_BUFFER )
  17.             return FALSE;
  18.     }

  19.     pUserInfo = (PTOKEN_USER) GlobalAlloc( GPTR, dwSize );

  20.     if(! GetTokenInformation(hToken, TokenUser, pUserInfo,
  21.         dwSize, &dwSize ) )
  22.     {
  23.         return FALSE;
  24.     }

  25.     ConvertSidToStringSid(pUserInfo->User.Sid, &StringSid);
  26.     printf("Sid: %s\n", StringSid);


  27.     if ( pUserInfo )
  28.         GlobalFree( pUserInfo );
  29.     return TRUE;
  30. }

  31. int _tmain(int argc, _TCHAR* argv[])
  32. {
  33.     GetCurrentUserForSID();
  34.     return 0;
  35. }
### 获取当前登录用户的 ID 在不同编程语言和操作系统环境中,获取当前登录用户 ID 的方法有所不同。以下是几种常见环境下的实现方式。 #### Python 中获取当前用户 ID 对于 Linux 和 macOS 用户,在 Python 中可以使用 `os` 库来获得当前用户的 ID: ```python import os uid = os.getuid() print(f"The current user's UID is {uid}") ``` 此代码片段展示了如何通过调用 `os.getuid()` 函数返回当前进程的有效用户 ID[^4]。 而对于 Windows 系统,则可以通过查询特定的环境变量或使用其他库函数完成相同的操作;但是需要注意的是,Windows 并不支持上述用于 Unix 类系统的 API 调用。 #### C/C++ 下获取当前用户 ID (Linux/macOS) 当工作于 C 或者 C++ 编程环境下时,同样可以在类 Unix 操作系统上利用标准 POSIX 接口取得该信息: ```c #include <unistd.h> #include <stdio.h> int main() { uid_t uid; uid = geteuid(); printf("The effective user ID of this process is %d\n", uid); } ``` 这段程序会打印出运行它的进程中有效用户的唯一标识符(UID)。这里采用了 `<unistd.h>` 头文件中的 `geteuid()` 函数来进行操作[^5]。 #### PowerShell Scripting on Windows 如果是在 Windows 上编写脚本的话,PowerShell 提供了一种简单的方法来检索当前登录者的 SID (安全识别码),这通常被用来表示用户身份: ```powershell $currentUserSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value Write-Output "Current User SID: $currentUserSid" ``` 以上命令能够显示当前活动账户的安全描述符字符串形式,它是一个更广泛适用的身份验证机制的一部分[^6]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值