文章作者:nabiy and stand__sure
This article documents the failure of the User Account Manager in the Windows Control Panel to report interactive logons made with the netapi. This security issue has been verified on Windows 2000 Professional, Windows XP Home, and Windows XP Professional. Microsoft was notified of this issue on July 28, 2005. The problem is not with the netapi or the ability to create users but with the User Account Manager in Windows. It simply fails to list all of the users that are on the system.
This issue was noticed while exploring the netapi on windows - users created with the netuseradd function failed to show up in the User Account Manager (an example follows). The failure to list users made with the netapi presents a problem for obvious reasons; home users and even administrators expect to see all of the users on their system when they manage them from the Control Panel.
The solution in all versions of windows is simple. Do not depend on the User Account Manager when managing user accounts on your system. Instead, users should use the Local Users and Groups management snapin. This is accessible via Control Panel >> Administrative Tools >> Computer Management >> Local Users and Groups. You can also access this snapin by running lusrmgr.msc from the run box.
If you are one of the unfortunate ones stuck with XP Home Edition you don’t have access to the Local Users and Groups management snapin. As an alternative it is possible to list all of the users on your system from the command-line:
C:\net user User accounts for \\XPHOMEBITES ------------------------------------------------------------------ Administrator ASPNET Guest HelpAssistant nabiy SUPPORT_388945a0 The command completed successfully.
When using this method you may see several accounts that you may not have been aware of. Microsoft makes four accounts when you install windows, the Administrator account; the Guest account; the HelpAssistant account; and the Support_388945a0 account. Other accounts may also be present (such as ASPNET) that were installed later and are used for special purposes or development. These are special user accounts and are defined in the following registry:
[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
If you find an account that should be removed from an XP Home machine you can remove it with the following command: net user ACCOUNTNAME /delete, where ACCOUNTNAME is the name of the account you want to delete.
Hopefully, in future versions of Windows Microsoft will allow users to list all interactive accounts from the control panel. Thanks to the new0rder team for telling me I’m not crazy, testing this, and finding other ‘related’ issues.
nabiy
---
The following examples were used to verify this issue.
Example in cpp:
Code:
#include <windows.h>
#include <lm.h>
int main()
{
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
LPWSTR name = L"hidden";
LPWSTR pass = L"hidden";
ui.usri1_name = name;
ui.usri1_password = pass;
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;
NetUserAdd(NULL,
dwLevel,
(LPBYTE)&ui,
&dwError);
return 0;
}
[Ctrl+A Select All]