Tabela LockPermissions

A Tabela LockPermissions é usada para proteger partes individuais de um aplicativo em um ambiente bloqueado. Ela pode ser usada com a instalação de arquivos, chaves do Registro e pastas criadas.

Um pacote destinado à instalação no Windows Server 2008 R2 ou Windows 7 deve usar a Tabela MsiLockPermissionsEx em vez da Tabela LockPermissions. As versões do Windows Installer anteriores ao Windows Installer 5.0 ignoram a Tabela MsiLockPermissionsEx. O Windows Installer 5.0 pode instalar um pacote que contém a Tabela LockPermissions. A partir do Windows Installer 5.0, a instalação de um pacote que contém a Tabela MsiLockPermissionsEx e a Tabela LockPermissions falha e retorna a mensagem de erro 1941 do Windows Installer.

A Tabela LockPermissions tem as colunas a seguir.

Coluna Tipo Chave Nullable
LockObject Identificador S N
Tabela Texto S N
Domínio Formatado S S
Usuário Formatado S N
Permissão DoubleInteger N S

 

Colunas

LockObject

Esta coluna e a coluna Tabela especificam juntas o arquivo, o diretório ou a chave do Registro que deve ser protegida. A coluna LockObject é uma chave estrangeira que aponta para a chave primária da tabela especificada pela coluna Tabela.

Tabela

Esta coluna e a coluna LockObject especificam o arquivo, o diretório ou a chave do Registro que deve ser protegida. Na coluna Tabela, insira Arquivo, Registro ou CreateFolder para especificar um LockObject listado na Tabela de Arquivos, Tabela de Registros ou Tabela CreateFolder.

Domínio

A coluna que identifica o domínio do usuário para o qual as permissões devem ser definidas. Esse é o nome de um computador autônomo ou um nome de domínio. O tipo de dados dessa coluna é Formatado e é possível usar a cadeia de caracteres [%USERDOMAIN] nesse campo para obter o valor da variável de ambiente USERDOMAIN para o domínio atual. Para obter qualquer outro domínio, é necessário usar as Ações Personalizadas. Para obter mais informações, confira a Tabela de Ações Personalizadas.

Usuário

A coluna que identifica o nome localizado do usuário para o qual as permissões devem ser definidas. Esse nome deve estar localizado no computador ou domínio. A instalação falhará caso o computador ou o controlador de domínio não reconheça a combinação de domínio e usuário ou caso o SID (identificador de segurança) do usuário não possa ser recuperado. Vários usuários podem ser especificados para um único LockObject.

Os nomes de usuário comuns "Todos" e "Administradores" podem ser inseridos em inglês e são mapeados para SIDs conhecidos. O LocalSystem recebe controle total em todos os descritores de segurança criados por meio da Tabela LockPermissions. Use a Propriedade ComputerName, a Propriedade LogonUser ou a Propriedade USERNAME neste campo para obter o usuário atual. Uma ação personalizada é necessária para inserir o nome localizado de qualquer outro usuário ou grupo.

Use vários registros com entradas idênticas de LockObject e Tabela (mas entradas de usuário diferentes) para especificar listas de controle de acesso para vários usuários.

Permissão

A coluna que identifica a descrição de inteiro dos privilégios do sistema. O seguinte fornece os valores mais usados (existe uma lista completa em Winnt.h).

Privilege Descrição
GENERIC_ALL
0X10000000
268435456
Leitura, gravação e acesso de execução
GENERIC_EXECUTE
0X20000000
536870912
Acesso de execução
GENERIC_WRITE
0X40000000
1073741824
Acesso de gravação

 

Não é possível especificar GENERIC_READ na coluna Permissão. A tentativa de fazer isso falhará. Em vez disso, especifique um valor como KEY_READ ou FILE_GENERIC_READ.

O valor Nulo inserido nesta coluna é reservado para uso futuro.

Comentários

As ações InstallFiles, WriteRegistryValues e CreateFolders em tabelas de sequência processam as informações nesta tabela. Para obter informações sobre como usar as tabelas de sequência, confira Como usar uma tabela de sequência.

A permissão só pode ser definida na Tabela LockPermissions para usuários que já existem no computador ou domínio. Uma tentativa de definir permissões para um usuário desconhecido faz com que a instalação falhe, mesmo que essa conta de usuário seja criada durante a instalação por uma ação personalizada adiada.

É recomendável que o grupo local do administrador do sistema seja incluído em todas as ACL (listas de controle de acesso). Isso garante que o administrador do sistema possa acessar e manter objetos.

Cada arquivo, chave do Registro ou diretório listado na Tabela LockPermissions recebe um descritor de segurança explícito, independentemente de substituir um objeto existente ou não. O Windows Installer tenta preservar a segurança em objetos que já existem no sistema. Caso um objeto não esteja listado na Tabela LockPermissions e substituir um objeto existente, a substituição obterá as configurações de segurança do objeto que ele substitui.

Caso um objeto não esteja listado na Tabela LockPermissions e não substituir um objeto existente, ele não receberá nenhum descritor de segurança explícito. O acesso ao novo objeto baseia-se nos atributos de seu objeto pai ou contêiner. Caso um objeto não esteja listado na tabela e substituir um objeto sem descritor de segurança explícito, o acesso ao novo objeto será baseado nos atributos de seu objeto pai ou contêiner.

O Windows Installer define a propriedade UserSID para o SID (identificador de segurança) ou o usuário que está executando a instalação.

Validação

ICE03
ICE06
ICE46
ICE55