Tabela LockPermissions

A tabela LockPermissions é usada para proteger partes individuais de um aplicativo em um ambiente bloqueado. Pode ser usado com a instalação de arquivos, chaves de 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. 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. Do Windows Installer 5.0 em diante, 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 Type Chave Permite valor nulo
LockObject Identificador N N
Tabela Text N N
Domínio Formatado N S
Usuário Formatado N N
Permissão DoubleInteger N S

 

Colunas

LockObject

Essa coluna e a coluna Table juntas especificam o arquivo, o diretório ou a chave do Registro que deve ser protegido. A coluna LockObject é uma chave estrangeira que aponta para a chave principal da tabela especificada pela coluna Table.

Tabela

Essa coluna e a coluna LockObject especificam o arquivo, o diretório ou a chave do Registro que deve ser protegido. Na coluna Table, insira File, Registry ou CreateFolder para especificar um LockObject listado na Tabela File, Tabela Registry ou Tabela CreateFolder.

Domínio

A coluna que identifica o domínio do usuário para o qual as permissões devem ser definidas. Este é o nome de uma máquina autônoma ou de um nome de domínio. O tipo de dados da coluna é Formatado, e você pode 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 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á se o computador ou o controlador de domínio não reconhecer a combinação de domínio e usuário ou se o SID (identificador de segurança) do usuário não puder 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. LocalSystem recebe controle total em todos os descritores de segurança criados por meio da tabela LockPermissions. Você pode usar a propriedade ComputerName, propriedade LogonUser ou propriedade USERNAME nesse 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.

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

Permission

A coluna que identifica a descrição inteira dos privilégios do sistema. A seguir, são fornecidos os valores mais usados (existe uma lista completa em Winnt.h).

Escalonamento de 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. Ocorrerá falha caso seja feita uma tentativa. Em vez disso, você deverá especificar um valor como KEY_READ ou FILE_GENERIC_READ.

Null inserido nesta coluna é reservado para uso futuro.

Comentários

As ações InstallFiles, WriteRegistryValues e CreateFolders nas tabelas de sequência processam as informações nessa tabela. Para obter informações sobre como usar sequence tables, consulte 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 a conta de usuário seja criada durante a instalação por uma ação personalizada adiada.

Recomenda-se que o grupo local do administrador do sistema seja incluído em todas as listas de controle de acesso (ACL). 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. Se um objeto não estiver listado na Tabela LockPermissions e substituir um objeto existente, a substituição obterá as configurações de segurança do objeto que ele substituir.

Se um objeto não estiver 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 se baseia nos atributos do objeto pai ou contêiner. Se um objeto não estiver 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 como o SID (identificador de segurança) ou o usuário que executa a instalação.

Validação

ICE03
ICE06
ICE46
ICE55