服务程序中如何得到当前登陆用户名

如何获取Windows系统登陆用户名 如何获取Windows系统登陆用户名 获取登陆用户名 GetUserName WTSQuerySessionInformation 立即下载
 服务程序是用system身份运行的,所以如果直接使用getusername是不行的。但是如果用我上一篇文章中的思路,那么这个问题同样也可以迎刃而解了。方法就是可以通过取得shell的token,根据这个token来得到Sid,在根据Sid来得到当前登陆的用户名和domain。下面是示例代码:

//根据进程名称得到进程token

BOOL GetTokenByName(HANDLE &hToken,LPSTR lpName)
{
if(!lpName)
{
return FALSE;
}
HANDLE         hProcessSnap = NULL;
    BOOL           bRet      = FALSE;
    PROCESSENTRY32 pe32      = {0};

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == INVALID_HANDLE_VALUE)
        return (FALSE);

    pe32.dwSize = sizeof(PROCESSENTRY32);

    if (Process32First(hProcessSnap, &pe32))
    {
        do
        {
if(!strcmp(_strupr(pe32.szExeFile),_strupr(lpName)))
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,
FALSE,pe32.th32ProcessID);
bRet = OpenProcessToken(hProcess,TOKEN_ALL_ACCESS,&hToken);
CloseHandle (hProcessSnap);
return (bRet);
}
        }
        while (Process32Next(hProcessSnap, &pe32));
        bRet = TRUE;
    }
    else
        bRet = FALSE;

    CloseHandle (hProcessSnap);
    return (bRet);
}

BOOL GetCurrentUserName()
{
HANDLE hToken;

//得到shell的token
if(!GetTokenByName(hToken,"EXPLORER.EXE"))
{
return FALSE;
}
DWORD        cbti     = 0;
PTOKEN_USER  ptiUser  = NULL;
SID_NAME_USE snu;

//取得所需空间大小
if (GetTokenInformation(hToken, TokenUser, NULL, 0, &cbti))
{
CloseHandle(hToken);
return FALSE;
}

//分配空间
ptiUser = (PTOKEN_USER) HeapAlloc(GetProcessHeap(), 0, cbti);
if(!ptiUser)
{
CloseHandle(hToken);
return FALSE;
}

//取得token信息
if (!GetTokenInformation(hToken, TokenUser, ptiUser, cbti, &cbti))
{
CloseHandle(hToken);
HeapFree(GetProcessHeap(), 0, ptiUser);
return FALSE;
}

char szUser[50];
char szDomain[50];
DWORD nUser = 50;
DWORD nDomain = 50;

//根据用户的sid得到用户名和domain

if (!LookupAccountSid(NULL, ptiUser->User.Sid, szUser, &nUser,
szDomain, &nDomain, &snu))
{
CloseHandle(hToken);
HeapFree(GetProcessHeap(), 0, ptiUser);
return FALSE;
}
OutputDebugString(szUser);
OutputDebugString("/r/n");
OutputDebugString(szDomain);
OutputDebugString("/r/n");

CloseHandle(hToken);
HeapFree(GetProcessHeap(), 0, ptiUser);
return TRUE;
}

以当前登录用户权限打开程序 System权限运行的程序,比如系统服务打开外部程序时也是以System权限打开,但是有的程序不支持SYSTEM权限。 以当前登录用户权限打开程序,可以解决这个问题 立即下载

相关推荐

vc++获得Windows系统的登录用户名

vc++获得Windows系统的登录用户名

服务程序中如何得到当前登陆用户名(ZZ)

这也是开发当中经常遇到的一个问题,因为服务程序是用system身份运行的,所以如果直接使用getusername是不行的。但是如果用我上一篇文章中的思路,那么这个问题同样也可以迎刃而解了。方法就是可以通过取得shell的token,根据这个token来得到Sid,在根据Sid来得到当前登陆的用户名和domain。下面是示例代码://根据进程名称得到进程tokenBOOL GetTokenB

afxid的专栏 2049

基于python的排课表系统,用python编写排课系统

实现一个具体的课程管理系统。(5) 学生可以查看自己选上的课的成绩,以及各个课程的得分、绩点,并给出其平均绩点,但不允许查看年级其他人的成绩。(2) 学生定制专属课表,可以查看整个学期本人的课程安排,包括课程名称、上课时间、上课地点、任课老师、学分等等。(13) 系主任可以查看整个系的全部学生以及他们的平均绩点,可以对每个班进行排名,或者也可以对整个系进行排名。(15) 系主任可以查看整个学期所开设的所有课程,包括这些课程的全部详细信息。(1) 学生基本信息的查询,学生可以对本人的系统登陆密码进行修改。

yang0728y的博客 2000

windows域用户切换本地用户

首先,可以看到当前windows用户是登录到hacke域中;我的要求不是使用域用户登录计算机,而是使用本地用户登录计算机 点击“如何登录到其它域”,可以看到计算机已经给出了明确的提示,就是计算名\本地用户 (用户密码差点被server2008弄晕,win7用户密码是没有任何限制要求的) 如果忘记了本地用户名,可以通过域用户登录的计算机寻找,毕竟d(查询计算机所有用户) net user 本地用户登录还有一个小技巧,如果计算机名太长或者已经忘记了,可以使用 “ .\用户名 ” 登录

weixin_46104215的博客 2万+

地震勘探原理---地震预处理

3.1 为什么说要对数据进行振幅补偿?具体来说,地震波在传播过程中会遇到各种各样的地质条件,例如不同的岩层、土壤、水层等,这些介质的密度、速度等特性不同,因而对地震波的能量消耗也有所不同。在传播距离较远的情况下,能量损失可能会导致接收到的地震信号振幅变小。相反,在传播距离较近的情况下,能量损失可能较小,导致接收到的地震信号振幅变大。如果不对数据进行振幅补偿,这种振幅不均衡会导致地震数据分析和解释的误差和不确定性增加,可能产生错误的结论。

DARRENANJIAN的博客 3275

论文地图合规求生指南:5分钟搞定标准地图服务转ArcGIS可用矢量文件

本文提供了一份论文地图合规求生指南,帮助非GIS专业背景的科研人员在5分钟内将标准地图服务的EPS文件转换为ArcGIS兼容的矢量文件。通过详细的工作流程和关键参数设置,确保地图完全符合国家规范,同时节省时间成本。重点关注标准地图服务的合规性和Shapefile转换技巧,适用于紧急情况下的论文地图处理。

weixin_34233974的博客 402

服务应用程序如何访问当前登录用户的信息

转载自 robinwjbgui 最终编辑 xicao54007 以服务权限,即SYSTEM帐户启动的程序是无法取得用户的profile的,比如startup文件夹的路径。 首先,Shell函数是不行的: SHGetSpecialFolderPath取得的是C:\Windows\system32\config\systemprofile\ 其次,

求索 2949

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

什么时候勾选Bake into pose,当不希望动画带动游戏对象旋转时。在旋转的动画中一般是不用勾选的,因为就需要用它来带动我们的角色对象旋转。但在比如前进、后退、待机等动画来说,我们就可以勾选这里,以避免因动画文件本身的瑕疵而给我们带来的旋转。loop match:代表了这个动画在角度上的吻合度。如果这个动画在播放中转角过大,那么就会显示红色,告诉我们如果勾选bake into pose,则会带来不好的效果。

weixin_60154963的博客 6805

Windows:服务程序用当前登录用户来执行函数

为什么80%的码农都做不了架构师?>>> ...

weixin_33972649的博客 697

PostgreSQL的学习心得和知识总结(一百二十六)|深入理解PostgreSQL数据库SQL执行时间计算 \timing 和 log_duration的使用和原理

1、参考书籍:《PostgreSQL数据库内核分析》2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》3、

孤傲小二~阿沐的博客 986

使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/‘: Encountered end of file的解决方案

本文主要介绍了使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/’: Encountered end of file的解决方案,希望能对使用curl命令的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

通过令牌(Token)获取登录用户信息

通过令牌(Token)获取登录用户信息 我在之前的一篇文章里(小小地实现一个 whoami)写到查询当前进程的登录用户信息,但这个代码对于用 LogonUser 这种函数获取的令牌的 SID(Logon SID)是无效的(可以参考 MSDN 的 LookupAccountSid function这篇文章的 Remarks 部分)。因此这里需要...

weixin_30571465的博客 9427

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

服务程序中如何以当前登陆用户身份运行程序

开发中有时会遇到这样的问题,当服务程序需要使用某些功能时,由于用户的关系而受到限制, 比如访问注册表的HKEY_CURRENT_USER键,使用网络等等,这时候就需要以当前登陆用户的身份 去进行操作,通常会创建一个进程来完成需要的功能。如果使用CreateProcess来创建进程的话, 新创建的进程和服务程序依然是相同的用户身份,还是无法达到目的,只有使用CreateProcessAsUse

zwcwu31的专栏 1110

【AUTOSAR SystemServices】AUTOSAR CP中Watchdog Manager模块技术解析

本文深入解析了AUTOSAR中的Watchdog Manager模块实现。该模块通过多层次监督机制(Alive/Deadline/Logical Supervision)确保系统安全运行,具备动态模式切换和分级故障处理能力。 关键实现包括: 数据结构设计:包含监督实体状态结构体(实时状态维护)、监督配置结构体(支持模式切换)和全局状态信息(系统级监控) 核心流程优化:初始化采用事务性设计,检查点处理通过条件编译优化,主监控循环采用流水线式并行处理 监督机制实现:Alive监督采用滑动窗口算法,Deadlin

1039

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Security用户名密码登陆和token授权登陆两种实现

最近研究了一下Spring boot的web工程里通过Spring security做登陆验证。因为要满足授权登陆和用户名密码登陆两种方式,因此有一些配置和自定义的验证方式需要添加。这里简单说一下,主要留着备忘,之后有继续对这个框架研究再继续完善这份文档。 简单先说说spring security对于登陆验证的流程。 security本身带有一系列的拦截器,对于web资源的请求,都会根据secur...

markfengfeng的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

客户端登陆服务器用户名验证

/* 客户端通过键盘录入用户名。 服务端对用户名进行验证。 如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。 如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。 最多登陆三次,防止暴力登陆。 */ import java.io.*; import java.net.*; /* *客户端 */ class client { public stat

超宇的博客 9527

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA创建一个登陆窗体,输入用户名和密码登陆。

《JAVA从入门到精通》(第三版)第十三章练习最后一题尝试开发一个登陆窗体,包括用户名、密码以及提交按钮和重置按钮,当用户输入用户名mr、密码mrsoft时,弹出登陆成功提示对话框。package com.swingtest; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.A...

LycanYao的博客 3万+

mysql 设置当前数据库_prompt如何设置实现登陆MySQL显示用户名及当前数据库

prompt如何设置实现登陆MySQL显示用户名及当前数据库发布时间:2020-05-28 16:55:08来源:51CTO阅读:211作者:三月栏目:数据库下文给大家带来有关prompt如何设置实现登陆MySQL显示用户名及当前数据库内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完prompt如何设置实现登陆MySQL显示用户名及当前数据库你一定会有所...

weixin_42459611的博客 765

Html如何获取登陆用户名

最近学习ajax技术,前端改成了HTML静态网页来编写,那如何获取登陆的用户名呢?大家首先想到的肯定是利用Cookie和Session,在JSP页面这样做可以,但是静态HTML页面就不行了。 首先Cookie和session是什么呢? 首先大家都知道,HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。这时候就出现了cookie会话跟踪技术。 给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证

热爱技术,享受生活 1万+

怎么查看SVN当前登陆账号

Windows查看SVN当前登陆账号

weixin_43164228的博客 9239

Cookie免用户名登陆

Cookie免用户登陆实现原理 代码实现 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="http://localhost:8080/13_cookie_session/login..

caiji 537

Shell获取当前登陆的用户名的UID

#!/bin/bash echo "*当前登陆的用户名:$USER UID:$UID"

极客点儿 3014
上一篇: Windows NT/2000系统中如何获取系统的启动时间
下一篇: 基于88E6218的SOHO网络开发平台设计
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值