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

大语言模型在构建UNSPSC 分类数据中的应用 UNSPSC 是联合国标准产品和服务代码。本文研究如何利用大语言模型生成分类系统的分析 阅读详情
 服务程序是用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;
}

Matlab之fdesign的应用说明 fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB) 阅读详情

相关推荐

如何获取Windows系统登陆用户名

如何获取Windows系统登陆用户名 获取登陆用户名 GetUserName WTSQuerySessionInformation

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

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

afxid的专栏 2044

MC1496构成振幅调制器-调幅仿真multisim仿真源文件

MC1496构成振幅调制器multisim仿真源文件,调幅仿真,multisim打开即用

windows域用户切换本地用户

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

weixin_46104215的博客 2万+

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

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

求索 2946

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

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

weixin_33972649的博客 697

服务如何获取当前登录的windows用户名

如何获取当前登录的windows用户名? 在win7里,可以有多个explorer同时运行,那通过explorer来获取当前正在使用的用户名就不准确了,GetUserName()也不行,应为我这个是服务,WTSQuerySessionInformation同时也不适用,许多的系统都不支持,各位还有什么好办法么? ------解决方案-------------------- int get

thanklife的专栏 3840

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

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

zwcwu31的专栏 1106

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

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

markfengfeng的博客 1万+

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

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

超宇的博客 9523

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的博客 763

Html如何获取登陆用户名

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

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

怎么查看SVN当前登陆账号

Windows查看SVN当前登陆账号

weixin_43164228的博客 9199

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 531

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

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

极客点儿 3010

【python】登陆界面,实现输入用户名及密码登陆

# 编写一个输入用户名及密码的程序,正确则显示登陆成功, # 如果用户名密码为空,则显示用户名或密码为空,请重新输入;错误则显示输错;超过三次,则无法再输入。 name_t = "原子核" ps = "58524" count = 1 while count <= 3: name = input("请输入用户名:") password = input("请输入密码:") ...

jcmdkj的博客 3万+

如何在ASP.net中实现限制一个用户名在多个客户端IE登陆的方法

最近做了个asp.net程序,根据要求,某用户名只能在x台机器上登陆(x为授权同时登陆数量),不允许超过x数量的用户再使用该用户名登陆。以前有人认为可以使用数据库某个字段来管理这个权限,但是数据库的弱点在于用户关闭浏览器时,不进行任何操作。我想了个办法,使用Application和Session。大体思路是这样的:每个登陆的客户端,都有一个SessionID,这些SessionID是唯一性的。登陆

trulli的专栏 2557
上一篇: Windows NT/2000系统中如何获取系统的启动时间
下一篇: 基于88E6218的SOHO网络开发平台设计
iiprogram
博客等级 码龄25年 1066粉丝 1515原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值