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
0
Especifica parâmetros de senha globais. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_0 .
1
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 .
2
Especifica o nome de domínio e o identificador. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_2 .
3
Especifica informações de bloqueio. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_3 .
1001
Especifica o comprimento mínimo permitido da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1001 .
1002
Especifica a idade máxima permitida da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1002 .
1003
Especifica a idade mínima permitida da senha. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1003 .
1004
Especifica informações de logoff forçadas. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1004 .
1005
Especifica o comprimento do histórico de senhas. O parâmetro buf aponta para uma estrutura de USER_MODALS_INFO_1005 .
1.006
Especifica a função do servidor de logon. O parâmetro buf aponta para uma estrutura USER_MODALS_INFO_1006 .
1.007
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
ERROR_ACCESS_DENIED
O usuário não tem acesso às informações solicitadas.
ERROR_INVALID_PARAMETER
O parâmetro especificado é inválido. Para obter mais informações, consulte a seção Comentários a seguir.
NERR_InvalidComputer
O nome do computador é inválido.
NERR_UserNotFound
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

NetUserModalsGet

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_1001

USER_MODALS_INFO_1002

USER_MODALS_INFO_1003

USER_MODALS_INFO_1004

USER_MODALS_INFO_1005

USER_MODALS_INFO_1006

USER_MODALS_INFO_1007

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Funções modais do usuário