在Windows系统上以C++打印出当前活动用户的环境变量,代码如下(QT环境):

  1. void getEnvironmentVariables()
  2. {
  3. DWORD sessionId = WTSGetActiveConsoleSessionId();
  4. qInfo() << "Session ID = " << sessionId;
  5. HANDLE token;
  6. if (!WTSQueryUserToken(sessionId, &token))
  7. {
  8. qCritical() << "Failed to get the user token of session " << sessionId;
  9. }
  10. wchar_t* pEnv = NULL;
  11. if (CreateEnvironmentBlock((void**)&pEnv, token, TRUE))
  12. {
  13. while (*pEnv) {
  14. // printf("%ls\n", pEnv);
  15. qInfo() << QString::fromWCharArray(pEnv);
  16. pEnv += wcslen(pEnv) + 1;
  17. }
  18. }
  19. }

以上是打印当前活动用户(active user)的。

如果仅仅是是打印当前进程所处环境的环境变量,见Visual Studio的代码如下:

    1. #include <Windows.h>
    2. #include <UserEnv.h>
    3. #include <assert.h>
    4. #include <stdio.h>
    5. #pragma comment(lib, "userenv.lib")
    6. int main()
    7. {
    8. HANDLE hToken = NULL;
    9. BOOL ok = OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hToken);
    10. assert(ok);
    11. wchar_t* penv = L"";
    12. ok = CreateEnvironmentBlock((void**)&penv, hToken, TRUE);
    13. assert(ok);
    14. while (*penv) {
    15. printf("%ls\n", penv);
    16. penv += wcslen(penv) + 1;
    17. }
    18. return 0;
    19. }

http://blog.csdn.net/nirendao/article/details/52040232

在Windows系统上以C++打印出当前活动用户的环境变量的更多相关文章

  1. windows系统上安装与使用Android NDK r5 (转)

    windows系统上安装与使用Android NDK r5  很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单 ...

  2. windows系统上安装与使用Android NDK r5

    windows系统上安装与使用Android NDK r5  很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单 ...

  3. 手把手教你玩转 Gitea|在 Windows 系统上安装 Gitea

    Gitea 支持在 Windows 系统上安装和使用.Gitea 本身作为一个单体应用程序,即点即用,如需长期驻留作为后台服务并开机运行就要依靠 Windows 服务工具 sc.exe. 通过本文,你 ...

  4. 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

    http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...

  5. 非Unicode编码的软件如何在Windows系统上运行

    我们常常会遇到这样一种情况:点开某些日文软件(我不会说就是galgame( ╯□╰ ))会出现乱码或者直接无法运行. 出现乱码的原因很简单:编码与译码的方式不一致!!!!!!!!!!! 首先大家需要知 ...

  6. 在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面)

    在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面) (https://www.lfd.uci.edu/~gohlke/pythonlibs/) win10 ...

  7. Python3: Windows系统上同时安装Python2和Python3

    Python3: Windows系统上同时安装Python2和Python3 为什么要同时安装Python2和Python3环境呢? 因为一些库只支持Python2或者Python3; 在同一台电脑上 ...

  8. 利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)

    系统环境: 1.安装了python 2.安装了pyautogui模块 windows系统:无需安装依赖模块,在cmd中直接输入pip install pyautogui即可完成安装 Mac OS系统: ...

  9. Windows系统上搭建Clickhouse开发环境

    Windows系统上搭建Clickhouse开发环境 总体思路 微软的开发IDE是很棒的,有两种:Visual Studio 和 VS Code,一个重量级,一个轻量级.近年来VS Code越来越受欢 ...

随机推荐

  1. MSYS2是对MSYS的一个独立的重写,是基于当前的Cygwin和MinGW-w64重写的,以同原生的Windows软件有更好的交互性为目的

    MSYS2的官网:http://sourceforge.net/projects/msys2/ 官网的描述: Description MSYS2 is an independent rewrite o ...

  2. [TypeScript] Create random integers in a given range

    Learn how to create random integers using JavaScript / TypeScript. /** * Returns a random int betwee ...

  3. [Compose] 18. Maintaining structure whilst asyncing

    We take our Promise.all() analogy further by using traversable on a Map(). Then we use two traversal ...

  4. 【hdu 2955】Robberies

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  5. 剑指Offer面试题10(Java版):二进制中的1的个数

    题目:请实现一个函数,输入一个整数.输出该数二进制表示中1的个数. 比如把9表示成二进制是1001,有2位是1.因此假设输入9.该函数输出2. 1.可能引起死循环的解法 这是一道非常主要的考察二进制和 ...

  6. 强大的 function adapters

    void printElem(int elem, const char* prefix){ cout << prefix << elem << endl; } fo ...

  7. VB的MSHFlexGrid控件内容导入Excel

    机房收费系统中有非常多窗口用到导出到Excel,说一下vb与Excel的交互,怎样才干将MSHFlexgrid中的内容导出到Excel. 首先在VB中加入引用Microsoft Excel 14.0 ...

  8. cellForRowAtIndexPath 设置图片

    #import "UIImageView+MJWebCache.h" #import "MJPhotoBrowser.h" #import "MJPh ...

  9. java读取.properties文件乱码

    1.config.properties文件写不进中文,写进去都变成了unicode,解决的方法是右键该文件--Properties--Resource--Text file encoding ,选ot ...

  10. 【19.05%】【codeforces 731F】 Video Cards

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...