PC의 모든 사용자 이름을 얻을 수 있는 프로그램(확장판)
이것은 내 PC에서 "net user Aino Megumi"명령을 실행했을 때의 출력 결과의 두 줄입니다.
PC의 모든 사용자 이름을 가져오는 프로그램
get_all_user_info.cpp
#ifndef UNICODE
#define UNICODE
#endif
#include <Windows.h>
#include <string>
#include <vector>
#include <LM.h>
std::vector<std::pair<std::wstring, std::wstring>> get_all_user() {
std::vector<std::pair<std::wstring, std::wstring>> re;
PVOID pv;
DWORD n, i = 0, err;
do {
switch (err = NetQueryDisplayInformation(0, 1, i, MAXDWORD, MAX_PREFERRED_LENGTH, &n, &pv)) {
case 0:
case ERROR_MORE_DATA:
if (n) {
PNET_DISPLAY_USER p = (PNET_DISPLAY_USER)pv;
do {
i = p->usri1_next_index;
if (std::wcslen(p->usri1_full_name) == 0) re.emplace_back(std::make_pair(p->usri1_name, p->usri1_name));
else re.emplace_back(std::make_pair(p->usri1_name, p->usri1_full_name));
// DbgPrint("<%S> <%S>\n", p->usri1_name, p->usri1_comment);
#if 0 // for C++ Builder XE4
OutputDebugString(p->usri1_name);
#endif
} while (p++, --n);
}
NetApiBufferFree(pv);
break;
}
} while (err == ERROR_MORE_DATA);
return re;
}
예시 사용하기 (이 함수가 get all user info.h에 쓰여 있다고 가정합니다)main.cpp
#include <iostream>
#include "get_all_user_info.h"
int main() {
std::wcout.imbue(std::locale(""));
for (auto& i : get_all_user()) {
std::wcout << i.first << ", " << i.second << std::endl;
}
std::getchar();
return 0;
}
실행 결과Home GroupUser가 나오지 못하게 하는 건 아닐까 싶은데, 좋은 일이라 처리하지 못했어요.
그나저나 이것도 당연히 넷피32입니다.lib의 헤어 케어를 지정해야 합니다.
Reference
이 문제에 관하여(PC의 모든 사용자 이름을 얻을 수 있는 프로그램(확장판)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AinoMegumi/items/11073486a2b78737de8e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)