如题,请各位大侠不吝赐教。

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=798
      

  2.   

    wkui1_username;  用户名
    wkui1_logon_domain; 域名
      

  3.   

    CString CProcessUserDemoDlg::GetProcessUserName(DWORD dwPID)
    {
    HANDLE hProcess;
    HANDLE hToken;
    char buf[0x400];
    char buf1[100];
    char buf2[100];
    DWORD dwNumBytesRet1;
    DWORD dwNumBytesRet2;
    SID_NAME_USE peUse;
    CString strUserName; strUserName.Empty(); hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, NULL, dwPID);
    if (hProcess == NULL)
    {
    strUserName.Empty();
    return strUserName;
    } if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken))
    {
    strUserName.Empty();
    return strUserName;
    } if (!GetTokenInformation(hToken, TokenUser, &buf, 0x400, &dwNumBytesRet1))
    {
    strUserName.Empty();
    return strUserName;
    } dwNumBytesRet1 = 100;
    dwNumBytesRet2 = 100;
    if (!LookupAccountSid(NULL, (DWORD *)(*(DWORD *)buf), 
    buf1, &dwNumBytesRet1, buf2, &dwNumBytesRet2, &peUse))
    {
    strUserName.Empty();
    return strUserName;
    } TRACE("Run Auth:%s\\%s \n", buf2, buf1); strUserName.Format("%s\\%s", buf2, buf1);
    ::CloseHandle(hToken);
    ::CloseHandle(hProcess);
    return strUserName;
    }
    传入参数为进程的PID,返回值就是包含域名和用户的CString类
    运行成功后在strUserName里就是域名和用户名,我刚做的。要求运行程序的用户有DEBUG权限,否则只能看当前用户的进程