# encoding: ascii
# api: powershell
# title: live session fun
# description: Somebody says that there is no CompatUI (COM object) in Windows 7, someone says the opposite. I found it on my copy of Win7 but I’m not sure what it’s a standard library – probably it’s a rudiment of WinXP.
# version: 0.1
# type: module
# author: greg zakharov
# license: CC0
# x-poshcode-id: 5270
# x-archived: 2014-07-22T15:13:36
# x-published: 2014-06-30T15:06:00
#
#
#Windows PowerShell live session dump
PS D:\> $dll = (gcm -ea 0 -c Application compatui.dll).Definition
PS D:\> PS D:\> if ($dll -ne $null) {
>> Import-Module strings #I used my own module (analog of Sysinternals strings)
>> strings -n 7 $dll | ? {$_ -cmatch 'CompatUI|CLSID'}
>> }
>>
...
#this which I looked for
CompatUI.Util = s 'Util Class'
CLSID = s '{0355854A-7F23-47E2-B7C3-97EE8DD42CD8}'
...
PS D:\> $cu = [Activator]::CreateInstance(([Type]::GetTypeFromCLSID('{0355854A-7F23-47E2B7C3-97EE8DD42CD8}', $false)))
PS D:\> $cu -eq $null
False
PS D:\> $cu | gm


   TypeName: System.__ComObject#{c5a7c759-1e8d-4b1b-b1e4-59f7f9b5171b}

Name                   MemberType Definition
----                   ---------- ----------
CheckAdminPrivileges   Method     int CheckAdminPrivileges ()
GetExePathFromObject   Method     Variant GetExePathFromObject (string)
GetItemKeys            Method     Variant GetItemKeys (string)
IsCompatWizardDisabled Method     int IsCompatWizardDisabled ()
IsExecutableFile       Method     int IsExecutableFile (string)
IsSystemTarget         Method     int IsSystemTarget (string)
RemoveArgs             Method     Variant RemoveArgs (string)
RunApplication         Method     uint RunApplication (string, string, int)
SetItemKeys            Method     int SetItemKeys (string, Variant)


#great! I can check my rights!
PS D:\> [Boolean]$cu.CheckAdminPrivileges()
False
PS D:\> [Boolean]$cu.IsExecutableFile('D:\bin\sed.exe')
True
#attention! the fun!
PS D:\> Out-File src\dummy -Encoding ASCII -InputObject 'MZ'
PS D:\> [Boolean]$cu.IsExecutableFile('D:\src\dummy')
True
PS D:\>
