O AppEnforce.log realmente registra incorretamente o contexto usado para instalação?

2

Eu tenho um tipo de implantação com os seguintes atributos:

Technology: MSI
Installation behavior: Install for system
Logon requirement: Whether or not a user is logged on
Installation program visibility: Hidden

Quando msiexec é executado pelo cliente, a seguinte entrada é mostrada em AppEnforce.log:

Executing Command line: "C:\WINDOWS\system32\msiexec.exe" /i "AppleApplicationSupport.msi" /qn with user context

Isso é estranho, já que eu selecionei "Install for system".

Pesquisando revela algumas especulações de que o registro está incorreto:

for what it's worth, ive noticed that the appenforce.log seems to always say its in the user context, even when it isnt.

Encontrei outros comentários semelhantes, mas não encontrei nenhuma referência definitiva. Isso me deixa com as seguintes perguntas:

O AppEnforce.log realmente registra o contexto como usuário mesmo quando é executado como o sistema?

    
por alx9r 27.07.2015 / 21:16

1 resposta

3

TL; DR: AppEnforce.log de fato registra o contexto incorretamente (pelo menos para a tecnologia "Script Installer").

O teste

Eu criei um tipo de implantação com os seguintes atributos:

Technology: Script Installer
Installation behavior: Install for system
Logon requirement: Whether or not a user is logged on
Installation program visibility: Hidden
Installation program: powershell .\Install-Application.ps1

Install-Application.ps1 cria um arquivo de log chamado script-install-test-YYYY-MM-DD__HH-MM-SS.log . Esse script está no final deste post.

Em seguida, implantei esse tipo de implantação e assisti AppEnforce.log e script-install-test-X.log .

Resultados

Eu encontrei a seguinte entrada em AppEnforce.log :

Executing Command line: "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" .\Install-Application.ps1 with user context

Dentro de segundos, o script-install-test-X.log foi gravado na pasta script-install-test-SYSTEM . O sufixo SYSTEM indica que o script foi executado como SYSTEM.

Conclusão

Para a tecnologia "instalador de script", o contexto é gravado em AppEnforce.log messages do estilo

Executing Command line: "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" .\Install-Application.ps1 with user context

pode ser escrito incorretamente como "contexto do usuário", mesmo quando a linha de comando é executada como contexto do sistema.

E a tecnologia de instalação MSI?

Eu não realizei o teste para a tecnologia MSI Installer. No entanto, considerando que o contexto às vezes está errado para a Tecnologia do Instalador de Script, o contexto gravado em AppEnforce.log provavelmente deve ser considerado não confiável para todos os tipos de implantação, independentemente da tecnologia.

Install-Application.ps1

function Write-EnvToLog
{
    $appName = 'script-install-test'

    $logFolderPath = "c:\$appName-$([System.Environment]::UserName)"

    if ( -not (Test-Path $logFolderPath -PathType Container) )
    {
        New-Item -Path $logFolderPath -ItemType Directory | Out-Null
    }

    if ( -not (Test-Path $logFolderPath -PathType Container ) )
    {
        return
    }

    $logFileName = "$appName'__$((Get-Date).ToString("yyyy-MM-dd__HH-mm-ss")).txt"

    $fp = "$logFolderPath\$logFileName"

    Get-ChildItem Env: | Out-File $fp | Out-Null

    return $true
}

try
{
    if ( Write-EnvToLog ) { "Complete!" }
    [System.Environment]::Exit(0)
}
catch
{
    [System.Environment]::Exit(1000)
}
    
por 27.07.2015 / 21:35