`

VB 获取进程的启动用户

    博客分类:
  • vb
VB 
阅读更多
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 Long

Private 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 Long
Private 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 If
End Function

 

分享到:
评论

相关推荐

    vb 获取系统进程PID及用户名

    如果需要进一步学习,可以解压后查看,结合以上讲解理解VB获取进程信息的具体步骤和方法。 总的来说,VB获取系统进程的PID和用户名主要通过`System.Diagnostics.Process`类,配合适当的权限控制和可能的API调用,...

    VB.NET 获取进程命令参数修改版

    **VB.NET获取进程命令参数详解** 在VB.NET编程中,获取进程及其命令行参数是一项重要的功能,这通常涉及到操作系统层面的交互。VB.NET提供了一种简单的方法来访问这些信息,主要通过`System.Diagnostics.Process`类...

    监控获取进程启动命令行.zip_ubuntu 命令行启动

    `监控获取进程启动命令行.vbw`则是VB工作空间文件,保存了开发环境的设置和用户状态,比如打开的文件和窗口位置。`Bas`文件通常包含VB的基本模块,封装了某些功能或类,供其他部分的代码调用。`Icon`文件则可能存储...

    VB查看进程是否运行

    要检查特定进程是否正在运行,我们需要使用`CreateToolhelp32Snapshot`函数获取系统当前的进程快照,然后使用`Process32First`和`Process32Next`函数遍历这些进程。以下是具体步骤: 1. 引入必要的API函数和常量: ...

    VB 获取程序运行的命令行

    这些参数可以是用户在命令行界面中输入的额外信息,或者是父进程在启动子进程时传入的参数。 命令行参数是在操作系统启动应用程序时,跟在程序路径之后的额外信息,通常用于定制程序的行为。在VB中,我们可以通过...

    VB锁进程进程快照,Kill多的进程,可以设定你不想KIL了的进程自己改

    在VB中,我们可以通过`Process.Id`属性获取进程ID。 4. **Process对象的属性**:如`Process.Name`获取进程的名称,`Process.MainWindowHandle`获取进程主窗口的句柄,这些都是判断和管理进程的关键信息。 5. **...

    VB双进程守护(附源代码)

    - 守护进程启动后,定期检查主程序的进程状态。 - 如果发现主程序不在运行,守护进程执行重新启动主程序的逻辑。 - 主程序和守护进程之间可能有心跳机制,互相确认对方存活。 6. **安全性与反恶意行为** 虽然...

    vb创建SYSTEM用户进程

    3. 设置启动信息(STARTUPINFO)和进程信息(PROCESS_INFORMATION)结构:这些结构体包含关于新进程启动时的配置信息,如窗口大小、位置等。 4. 调用CreateProcessAsUser函数:最后,使用上述准备好的信息,调用该...

    vb 做的 进程监视工具

    3. **获取进程路径**:当用户需要了解某个进程来自哪个文件时,该工具可以提供进程的完整路径。这有助于确定进程是否为正常系统组件或是可疑的第三方软件,有助于进行安全评估。 结合标签“进程监视”和“vb”,...

    VB创建SYSTEM用户进程

    若要获取VB创建SYSTEM用户进程的代码示例,建议直接访问codefans.net或相关资源网站,查找相关的VB教程或代码片段。同时,学习和实践此类操作时,确保遵循最佳安全实践,避免对系统造成潜在损害。

    VB-检测父进程的软件源码

    1. **进程管理API**:VB中可能会使用到如`CreateProcess`、`OpenProcess`、`GetProcessId`、`GetParentProcessId`等Windows API函数来获取进程信息。 2. **错误处理**:为了确保代码的健壮性,可能包含错误处理机制...

    vb.net 进程关闭,监控源码

    通过`Process`类,我们可以获取系统中当前运行的进程信息,启动新的进程,或者控制已存在的进程,如终止进程。 1. **监控指定进程**: - 使用`Process.GetProcessesByName()`方法可以获取指定名称的进程列表。 - ...

    VB获取模块地址(VB获取dll地址).rar

    2. **VB获取DLL地址**:DLL地址获取主要是为了动态链接和调用DLL中的函数。VB提供了`LoadLibrary`和`GetProcAddress`两个API函数来实现这一目标。`LoadLibrary`用于加载指定的DLL,并返回其模块句柄,`...

    vb进程管理器源码.rar

    - `modGetIcon.bas`: 可能负责获取进程关联的图标,提升用户体验。 - `modMain.bas`: 通常包含程序的主入口点和主要逻辑。 - `modINI.bas`: 可能是用于读写配置文件(.ini格式)的模块,用于保存和加载用户的设置。 ...

    vb判断程序启动例子

    ' 使用GetProcessesByName获取进程列表 Dim processes As Process() = Process.GetProcessesByName(programName) ' 检查找到的进程数量 If processes.Length > 0 Then MessageBox.Show("程序已启动") Else ...

    VB.NET 系统进程管理器源码

    通过`Process.Id`属性,我们可以获取进程的唯一标识符(PID),而`Process.Name`则返回进程的可执行文件名。 在源码中,可能会包含以下关键部分: 1. **进程列表的获取**:源码会使用`Process.GetProcesses()`或`...

    用vb实现进程重启的源代码

    `EnumProcesses`可以枚举系统中所有进程,而`OpenProcess`则获取进程的句柄,使得我们可以对它进行操作。 为了实现进程重启,我们需要以下步骤: 1. 检查目标进程是否正在运行。这可以通过读取`System.Diagnostics...

    VB进程管理器

    这个类提供了获取进程信息、启动和停止进程的方法。 例如,`Process.GetProcesses()`方法用于获取所有运行的进程,而`Process.Start()`和`Process.Kill()`则分别用于启动和结束进程。通过遍历`Process`对象的属性,...

    vb进程监视器

    1. **进程监控**:VB进程监视器能够定期检查指定的进程是否在运行,通过读取系统进程列表来获取进程状态。如果发现目标进程未运行,它会触发报警机制,通知管理员或者自动采取下一步行动。 2. **异常处理**:当主...

    vb.rar_vb 禁止 进程

    3. **进程保护**:VB代码可能包含循环检查,不断检测目标进程是否存在,一旦发现进程被尝试结束,立即重新启动它或者发出警告。 4. **钩子技术**:可能会使用消息钩子(Message Hooks)或系统钩子(System Hooks)...

Global site tag (gtag.js) - Google Analytics