ホーム › System.GroupPolicy › MANAGEDAPPLICATION
MANAGEDAPPLICATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| pszPackageName | LPWSTR | 8/4 | +0 | +0 | パッケージ名(ワイド文字列)。 |
| pszPublisher | LPWSTR | 8/4 | +8 | +4 | 発行元名(ワイド文字列)。 |
| dwVersionHi | DWORD | 4 | +16 | +8 | バージョン番号の上位部分。 |
| dwVersionLo | DWORD | 4 | +20 | +12 | バージョン番号の下位部分。 |
| dwRevision | DWORD | 4 | +24 | +16 | リビジョン番号。 |
| GpoId | GUID | 16 | +28 | +20 | アプリケーションを配布したGPOのGUID。 |
| pszPolicyName | LPWSTR | 8/4 | +48 | +36 | 配布元のポリシー名(ワイド文字列)。 |
| ProductId | GUID | 16 | +56 | +40 | 製品を識別するGUID。 |
| Language | WORD | 2 | +72 | +56 | アプリケーションの言語ID。 |
| pszOwner | LPWSTR | 8/4 | +80 | +60 | アプリケーションの所有者名(ワイド文字列)。 |
| pszCompany | LPWSTR | 8/4 | +88 | +64 | 提供会社名(ワイド文字列)。 |
| pszComments | LPWSTR | 8/4 | +96 | +68 | コメント(ワイド文字列)。 |
| pszContact | LPWSTR | 8/4 | +104 | +72 | 連絡先(ワイド文字列)。 |
| pszSupportUrl | LPWSTR | 8/4 | +112 | +76 | サポートURL(ワイド文字列)。 |
| dwPathType | DWORD | 4 | +120 | +80 | インストールパスの種類フラグ。 |
| bInstalled | BOOL | 4 | +124 | +84 | アプリケーションがインストール済みかを示す真偽値。 |
各言語での定義
#include <windows.h>
// MANAGEDAPPLICATION (x64 128 / x86 88 バイト)
typedef struct MANAGEDAPPLICATION {
LPWSTR pszPackageName;
LPWSTR pszPublisher;
DWORD dwVersionHi;
DWORD dwVersionLo;
DWORD dwRevision;
GUID GpoId;
LPWSTR pszPolicyName;
GUID ProductId;
WORD Language;
LPWSTR pszOwner;
LPWSTR pszCompany;
LPWSTR pszComments;
LPWSTR pszContact;
LPWSTR pszSupportUrl;
DWORD dwPathType;
BOOL bInstalled;
} MANAGEDAPPLICATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MANAGEDAPPLICATION
{
public IntPtr pszPackageName;
public IntPtr pszPublisher;
public uint dwVersionHi;
public uint dwVersionLo;
public uint dwRevision;
public Guid GpoId;
public IntPtr pszPolicyName;
public Guid ProductId;
public ushort Language;
public IntPtr pszOwner;
public IntPtr pszCompany;
public IntPtr pszComments;
public IntPtr pszContact;
public IntPtr pszSupportUrl;
public uint dwPathType;
[MarshalAs(UnmanagedType.Bool)] public bool bInstalled;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MANAGEDAPPLICATION
Public pszPackageName As IntPtr
Public pszPublisher As IntPtr
Public dwVersionHi As UInteger
Public dwVersionLo As UInteger
Public dwRevision As UInteger
Public GpoId As Guid
Public pszPolicyName As IntPtr
Public ProductId As Guid
Public Language As UShort
Public pszOwner As IntPtr
Public pszCompany As IntPtr
Public pszComments As IntPtr
Public pszContact As IntPtr
Public pszSupportUrl As IntPtr
Public dwPathType As UInteger
<MarshalAs(UnmanagedType.Bool)> Public bInstalled As Boolean
End Structureimport ctypes
from ctypes import wintypes
class MANAGEDAPPLICATION(ctypes.Structure):
_fields_ = [
("pszPackageName", ctypes.c_void_p),
("pszPublisher", ctypes.c_void_p),
("dwVersionHi", wintypes.DWORD),
("dwVersionLo", wintypes.DWORD),
("dwRevision", wintypes.DWORD),
("GpoId", GUID),
("pszPolicyName", ctypes.c_void_p),
("ProductId", GUID),
("Language", ctypes.c_ushort),
("pszOwner", ctypes.c_void_p),
("pszCompany", ctypes.c_void_p),
("pszComments", ctypes.c_void_p),
("pszContact", ctypes.c_void_p),
("pszSupportUrl", ctypes.c_void_p),
("dwPathType", wintypes.DWORD),
("bInstalled", wintypes.BOOL),
]#[repr(C)]
pub struct MANAGEDAPPLICATION {
pub pszPackageName: *mut core::ffi::c_void,
pub pszPublisher: *mut core::ffi::c_void,
pub dwVersionHi: u32,
pub dwVersionLo: u32,
pub dwRevision: u32,
pub GpoId: GUID,
pub pszPolicyName: *mut core::ffi::c_void,
pub ProductId: GUID,
pub Language: u16,
pub pszOwner: *mut core::ffi::c_void,
pub pszCompany: *mut core::ffi::c_void,
pub pszComments: *mut core::ffi::c_void,
pub pszContact: *mut core::ffi::c_void,
pub pszSupportUrl: *mut core::ffi::c_void,
pub dwPathType: u32,
pub bInstalled: i32,
}import "golang.org/x/sys/windows"
type MANAGEDAPPLICATION struct {
pszPackageName uintptr
pszPublisher uintptr
dwVersionHi uint32
dwVersionLo uint32
dwRevision uint32
GpoId windows.GUID
pszPolicyName uintptr
ProductId windows.GUID
Language uint16
pszOwner uintptr
pszCompany uintptr
pszComments uintptr
pszContact uintptr
pszSupportUrl uintptr
dwPathType uint32
bInstalled int32
}type
MANAGEDAPPLICATION = record
pszPackageName: Pointer;
pszPublisher: Pointer;
dwVersionHi: DWORD;
dwVersionLo: DWORD;
dwRevision: DWORD;
GpoId: TGUID;
pszPolicyName: Pointer;
ProductId: TGUID;
Language: Word;
pszOwner: Pointer;
pszCompany: Pointer;
pszComments: Pointer;
pszContact: Pointer;
pszSupportUrl: Pointer;
dwPathType: DWORD;
bInstalled: BOOL;
end;const MANAGEDAPPLICATION = extern struct {
pszPackageName: ?*anyopaque,
pszPublisher: ?*anyopaque,
dwVersionHi: u32,
dwVersionLo: u32,
dwRevision: u32,
GpoId: GUID,
pszPolicyName: ?*anyopaque,
ProductId: GUID,
Language: u16,
pszOwner: ?*anyopaque,
pszCompany: ?*anyopaque,
pszComments: ?*anyopaque,
pszContact: ?*anyopaque,
pszSupportUrl: ?*anyopaque,
dwPathType: u32,
bInstalled: i32,
};type
MANAGEDAPPLICATION {.bycopy.} = object
pszPackageName: pointer
pszPublisher: pointer
dwVersionHi: uint32
dwVersionLo: uint32
dwRevision: uint32
GpoId: GUID
pszPolicyName: pointer
ProductId: GUID
Language: uint16
pszOwner: pointer
pszCompany: pointer
pszComments: pointer
pszContact: pointer
pszSupportUrl: pointer
dwPathType: uint32
bInstalled: int32struct MANAGEDAPPLICATION
{
void* pszPackageName;
void* pszPublisher;
uint dwVersionHi;
uint dwVersionLo;
uint dwRevision;
GUID GpoId;
void* pszPolicyName;
GUID ProductId;
ushort Language;
void* pszOwner;
void* pszCompany;
void* pszComments;
void* pszContact;
void* pszSupportUrl;
uint dwPathType;
int bInstalled;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MANAGEDAPPLICATION サイズ: 88 バイト(x86)
dim st, 22 ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; pszPackageName : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pszPublisher : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwVersionHi : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwVersionLo : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwRevision : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; GpoId : GUID (+20, 16byte) varptr(st)+20 を基点に操作(16byte:入れ子/配列)
; pszPolicyName : LPWSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ProductId : GUID (+40, 16byte) varptr(st)+40 を基点に操作(16byte:入れ子/配列)
; Language : WORD (+56, 2byte) wpoke st,56,値 / 値 = wpeek(st,56)
; pszOwner : LPWSTR (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; pszCompany : LPWSTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; pszComments : LPWSTR (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; pszContact : LPWSTR (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; pszSupportUrl : LPWSTR (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwPathType : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; bInstalled : BOOL (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MANAGEDAPPLICATION サイズ: 128 バイト(x64)
dim st, 32 ; 4byte整数×32(構造体サイズ 128 / 4 切り上げ)
; pszPackageName : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pszPublisher : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; dwVersionHi : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwVersionLo : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwRevision : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; GpoId : GUID (+28, 16byte) varptr(st)+28 を基点に操作(16byte:入れ子/配列)
; pszPolicyName : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ProductId : GUID (+56, 16byte) varptr(st)+56 を基点に操作(16byte:入れ子/配列)
; Language : WORD (+72, 2byte) wpoke st,72,値 / 値 = wpeek(st,72)
; pszOwner : LPWSTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; pszCompany : LPWSTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; pszComments : LPWSTR (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; pszContact : LPWSTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; pszSupportUrl : LPWSTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; dwPathType : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; bInstalled : BOOL (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global MANAGEDAPPLICATION
#field intptr pszPackageName
#field intptr pszPublisher
#field int dwVersionHi
#field int dwVersionLo
#field int dwRevision
#field GUID GpoId
#field intptr pszPolicyName
#field GUID ProductId
#field short Language
#field intptr pszOwner
#field intptr pszCompany
#field intptr pszComments
#field intptr pszContact
#field intptr pszSupportUrl
#field int dwPathType
#field bool bInstalled
#endstruct
stdim st, MANAGEDAPPLICATION ; NSTRUCT 変数を確保
st->dwVersionHi = 100
mes "dwVersionHi=" + st->dwVersionHi