找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5125|回复: 2

'[VB6]获取进程用户

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2008-4-20 18:26:36 | 显示全部楼层 |阅读模式
[BR]'[VB6]获取进程用户
[BR]Private Type WTS_PROCESS_INFO    SessionID As Long    ProcessID As Long    pProcessName As Long    pUserSid As LongEnd Type
[BR]Private Const WTS_CURRENT_SERVER_HANDLE = 0&Private Declare Function WTSEnumerateProcesses _    Lib "wtsapi32.dll" Alias "WTSEnumerateProcessesA" _    (ByVal hServer As Long, ByVal Reserved As Long, _    ByVal Version As Long, ByRef ppProcessInfo As Long, _    ByRef pCount As Long) As LongPrivate Declare Function LookupAccountSid Lib "advapi32.dll" Alias "LookupAccountSidA" (ByVal lpSystemName As String, ByVal SID As Long, ByVal Name As String, cbName As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As LongPrivate Declare Sub WTSFreeMemory Lib "wtsapi32.dll" (pMemory As Any)Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, _    ByRef Source As Any, _    ByVal Length As Long)
[BR]Public Function GetProcessUserNameByProcessId(ByVal dwProcessId As Long) As String    Dim objWtsProcessInfo As WTS_PROCESS_INFO, i As Integer, lngRet As Long, lngCount As Long    Dim lngInfo As Long, lngAddr As Long, strUserName As String, strDomain As String, lngTmp As Long    lngRet = WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, lngInfo, lngCount)    If lngRet Then        lngAddr = lngInfo        For i = 1 To lngCount            CopyMemory objWtsProcessInfo, ByVal lngAddr, LenB(objWtsProcessInfo)            If objWtsProcessInfo.ProcessID = dwProcessId Then                strUserName = String(255, Chr(0))                strDomain = String(255, Chr(0))                lngRet = LookupAccountSid(vbNullString, objWtsProcessInfo.pUserSid, strUserName, 255, strDomain, 255, lngTmp)                GetProcessUserNameByProcessId = Left(strUserName, InStr(strUserName, Chr(0)) - 1)                WTSFreeMemory objWtsProcessInfo                Exit Function            End If            WTSFreeMemory objWtsProcessInfo            lngAddr = lngAddr + LenB(objWtsProcessInfo)        Next    End IfEnd Function
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2008-4-20 18:29:01 | 显示全部楼层
<br>不知道是怎么回事,发帖老出现乱码。
[此贴子已经被作者于2008-4-20 18:30:24编辑过]
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2008-4-20 19:19:38 | 显示全部楼层
[BR]这个是动网的问题了
[BR]&nbsp;
[BR]它自动要处理一些格式.
[BR]&nbsp;
[BR]我试一下看看.
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表