web-dev-qa-db-ja.com

AppEnforce.logは、インストールに使用されたコンテキストを実際に誤ってログに記録しますか?

次の属性を持つデプロイメントタイプがあります。

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

msiexecがクライアントによって実行されると、AppEnforce.logに次のエントリが表示されます。

コマンドラインの実行: "C:\ WINDOWS\system32\msiexec.exe"/i "AppleApplicationSupport.msi"/qn withuser context

「システムにインストール」を選択したので、これは奇妙です。

グーグル いくつかの推測を明らかにする ロギングが正しくないこと:

appenforce.logは、そうでない場合でも、ユーザーコンテキストで常にそれを示しているように見えることに気づきました。

他にも同様のコメントがいくつか見つかりましたが、明確な参照は見つかりませんでした。これにより、次の質問が残ります。

AppEnforce.logは、システムとして実行された場合でも、実際にコンテキストをユーザーとしてログに記録しますか?

2
alx9r

TL; DR:AppEnforce.logは実際にコンテキストを誤ってログに記録します(少なくとも「スクリプトインストーラー」テクノロジーの場合)。

テスト

次の属性を持つ展開タイプを作成しました。

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は、script-install-test-YYYY-MM-DD__HH-MM-SS.logというログファイルを作成します。そのスクリプトはこの投稿の最後にあります。

次に、その展開タイプを展開し、AppEnforce.logscript-install-test-X.logを監視しました。

結果

AppEnforce.logに次のエントリが見つかりました。

コマンドラインの実行: "C:\ WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe"。\ Install-Application.ps1 with user context

その後数秒以内に、script-install-test-X.logがフォルダscript-install-test-SYSTEMに書き込まれました。 SYSTEMサフィックスは、スクリプトがSYSTEMとして実行されたことを示します。

結論

「スクリプトインストーラー」テクノロジーの場合、スタイルのAppEnforce.logメッセージに書き込まれるコンテキスト

コマンドラインの実行: "C:\ WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe"。\ Install-Application.ps1 with user context

コマンドラインがシステムコンテキストとして実行されている場合でも、「ユーザーコンテキスト」として誤って記述される場合があります。

MSIインストーラテクノロジはどうですか?

MSIインストーラテクノロジのテストは実行しませんでした。ただし、スクリプトインストーラテクノロジのコンテキストが間違っている場合があることを考えると、AppEnforce.logに書き込まれたコンテキストは、テクノロジに関係なく、すべての展開タイプで信頼できないと見なされる可能性があります。

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)
}
3
alx9r