Função NetUserModalsSet (lmaccess.h)
A função NetUserModalsSet define informações globais para todos os usuários e grupos globais no banco de dados de segurança, que é o banco de dados sam (gerenciador de contas de segurança) ou, no caso de controladores de domínio, o Active Directory.
Sintaxe
NET_API_STATUS NET_API_FUNCTION NetUserModalsSet(
[in] LPCWSTR servername,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
Parâmetros
[in] servername
Ponteiro para uma cadeia de caracteres constante que especifica o nome DNS ou NetBIOS do servidor remoto no qual a função deve ser executada. Se esse parâmetro for NULL, o computador local será usado.
[in] level
Especifica o nível de informações dos dados. Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
|
Especifica parâmetros de senha globais. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_0 . |
|
Especifica informações do servidor de logon e do controlador de domínio. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1 . |
|
Especifica o nome de domínio e o identificador. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_2 . |
|
Especifica informações de bloqueio. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_3 . |
|
Especifica o comprimento mínimo permitido da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1001 . |
|
Especifica a idade máxima permitida da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1002 . |
|
Especifica a idade mínima permitida da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1003 . |
|
Especifica informações de logoff forçadas. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1004 . |
|
Especifica o comprimento do histórico de senhas. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1005 . |
|
Especifica a função do servidor de logon. O parâmetro buf aponta para uma estrutura USER_MODALS_INFO_1006 . |
|
Especifica informações do controlador de domínio. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1007 . |
[in] buf
Ponteiro para o buffer que especifica os dados. O formato desses dados depende do valor do parâmetro de nível . Para obter mais informações, consulte Buffers de função de gerenciamento de rede.
[out] parm_err
Ponteiro para um valor que recebe o índice do primeiro membro da estrutura de informações que causa ERROR_INVALID_PARAMETER. Se esse parâmetro for NULL, o índice não será retornado por erro. Para obter mais informações, consulte a seção Comentários a seguir.
Valor retornado
Se a função for bem-sucedida, o valor retornado será NERR_Success.
Se a função falhar, o valor retornado poderá ser um dos seguintes códigos de erro.
Código de retorno | Descrição |
---|---|
|
O usuário não tem acesso às informações solicitadas. |
|
O parâmetro especificado é inválido. Para obter mais informações, consulte a seção Comentários a seguir. |
|
O nome do computador é inválido. |
|
Não foi possível encontrar o nome de usuário. |
Comentários
Se você estiver programando para o Active Directory, poderá chamar determinados métodos ADSI (Active Directory Service Interface) para obter a mesma funcionalidade que você pode obter chamando as funções modais do usuário de gerenciamento de rede. Para obter mais informações, consulte IADsDomain.
Se você chamar essa função em um controlador de domínio que está executando o Active Directory, o acesso será permitido ou negado com base na ACL (lista de controle de acesso) do objeto protegível. A ACL padrão permite que apenas administradores de domínio e operadores de conta chamem essa função. Em um servidor membro ou estação de trabalho, somente administradores e usuários de energia podem chamar essa função. Para obter mais informações, consulte Requisitos de segurança para as funções de gerenciamento de rede. Para obter mais informações sobre ACLs, ACEs e tokens de acesso, consulte Controle de Acesso Model.
O descritor de segurança do objeto Domain é usado para executar a marcar de acesso para essa função. Normalmente, os chamadores devem ter acesso de gravação ao objeto inteiro para que as chamadas para essa função tenham êxito.
Se a função NetUserModalsSet retornar ERROR_INVALID_PARAMETER, você poderá usar o parâmetro parm_err para indicar o primeiro membro da estrutura de informações inválido. (A estrutura de informações começa com USER_MODALS_INFO_ e seu formato é especificado pelo parâmetro de nível .) A tabela a seguir lista os valores que podem ser retornados no parâmetro parm_err e no membro de estrutura correspondente que está em erro. (O prefixo usrmod*_ indica que o membro pode começar com vários prefixos, por exemplo, usrmod2_ ou usrmod1002_.)
Valor | Membro |
---|---|
MODALS_MIN_PASSWD_LEN_PARMNUM | usrmod*_min_passwd_len |
MODALS_MAX_PASSWD_AGE_PARMNUM | usrmod*_max_passwd_age |
MODALS_MIN_PASSWD_AGE_PARMNUM | usrmod*_min_passwd_age |
MODALS_FORCE_LOGOFF_PARMNUM | usrmod*_force_logoff |
MODALS_PASSWD_HIST_LEN_PARMNUM | usrmod*_password_hist_len |
MODALS_ROLE_PARMNUM | usrmod*_role |
MODALS_PRIMARY_PARMNUM | usrmod*_primary |
MODALS_DOMAIN_NAME_PARMNUM | usrmod*_domain_name |
MODALS_DOMAIN_ID_PARMNUM | usrmod*_domain_id |
MODALS_LOCKOUT_DURATION_PARMNUM | usrmod*_lockout_duration |
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM | usrmod*_lockout_observation_window |
MODALS_LOCKOUT_THRESHOLD_PARMNUM | usrmod*_lockout_threshold |
Exemplos
O exemplo de código a seguir demonstra como definir as informações globais para todos os usuários e grupos globais com uma chamada para a função NetUserModalsSet . O exemplo preenche os membros da estrutura USER_MODALS_INFO_0 e chama NetUserModalsSet, especificando o nível de informações 0.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 0;
USER_MODALS_INFO_0 ui;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = (LPTSTR) argv[1];
//
// Fill in the USER_MODALS_INFO_0 structure.
//
ui.usrmod0_min_passwd_len = 0;
ui.usrmod0_max_passwd_age = (86400 * 30);
ui.usrmod0_min_passwd_age = 0;
ui.usrmod0_force_logoff = TIMEQ_FOREVER; // never force logoff
ui.usrmod0_password_hist_len = 0;
//
// Call the NetUserModalsSet function; specify level 0.
//
nStatus = NetUserModalsSet((LPCWSTR) pszServerName,
dwLevel,
(LPBYTE)&ui,
NULL);
//
// If the call succeeds, inform the user.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"Modals information set successfully on %s\n", argv[1]);
//
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | lmaccess.h (inclua Lm.h) |
Biblioteca | Netapi32.lib |
DLL | Netapi32.dll |
Confira também
Funções de gerenciamento de rede