获取登录域列表

 

获取本机可以登录的位置(本机、域),在做windows登录的相关产品的时候比较有用,

Windows API 

NET_API_STATUS NetWkstaUserGetInfo(
  LPWSTR reserved,  
  DWORD level,      
  LPBYTE *bufptr    
);

可以完成这一操作.

 

reserved 为保留 总是为NULL

level为希望获取数据的级别,level值为 0、1、1101中的一个,分别对应着一个结构:

typedef struct _WKSTA_USER_INFO_0 {
  LPWSTR    wkui0_username;
}WKSTA_USER_INFO_0, *PWKSTA_USER_INFO_0, *LPWKSTA_USER_INFO_0;
typedef struct _WKSTA_USER_INFO_1 {
  LPWSTR    wkui1_username;
  LPWSTR    wkui1_logon_domain;
  LPWSTR    wkui1_oth_domains;
  LPWSTR    wkui1_logon_server;
}WKSTA_USER_INFO_1, *PWKSTA_USER_INFO_1, *LPWKSTA_USER_INFO_1;

typedef struct _WKSTA_USER_INFO_1101 { LPWSTR wkui1101_oth_domains;} WKSTA_USER_INFO_1101, *PWKSTA_USER_INFO_1101, *LPWKSTA_USER_INFO_1101;

 

结构中wkuil_logon_domain 为当前登录的domain 或计算机名(如果用户没有加入域而是登录本机)

wkuil_oth_domains 为可以使用的其他域列表,域名用空格隔开

 

下面是MSDN上的一段事例代码

#ifndef UNICODE
#define UNICODE
#endif

#include <stdio.h>
#include <windows.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")


int wmain(void)
{
    DWORD dwLevel = 1;
    LPWKSTA_USER_INFO_1 pBuf = NULL;
    NET_API_STATUS nStatus;
    //
    // Call the NetWkstaUserGetInfo function;
    //  specify level 1.
    //
    nStatus = NetWkstaUserGetInfo(NULL,
        dwLevel,
        (LPBYTE *)&pBuf);
    //
    // If the call succeeds, print the information
    //  about the logged-on user.
    //
    if (nStatus == NERR_Success)
    {
        if (pBuf != NULL)
        {
            wprintf(L"\n\tUser:          %s\n", pBuf->wkui1_username);
            wprintf(L"\tDomain:        %s\n", pBuf->wkui1_logon_domain);
            wprintf(L"\tOther Domains: %s\n", pBuf->wkui1_oth_domains);
            wprintf(L"\tLogon Server:  %s\n", pBuf->wkui1_logon_server);
        }
    }
    // Otherwise, print the system error.
    //
    else
        fprintf(stderr, "A system error has occurred: %d\n", nStatus);
    //
    // Free the allocated memory.
    //
    if (pBuf != NULL)
        NetApiBufferFree(pBuf);
   
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值