阿杰 发表于 2008-4-20 18:26:36

'[VB6]获取进程用户

'获取进程用户
Private Type WTS_PROCESS_INFO    SessionID As Long    ProcessID As Long    pProcessName As Long    pUserSid As LongEnd Type
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)
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

阿杰 发表于 2008-4-20 18:29:01

<br>不知道是怎么回事,发帖老出现乱码。
[此贴子已经被作者于2008-4-20 18:30:24编辑过]

马大哈 发表于 2008-4-20 19:19:38

这个是动网的问题了
&nbsp;
它自动要处理一些格式.
&nbsp;
我试一下看看.
页: [1]
查看完整版本: '[VB6]获取进程用户