Win32 API 日本語リファレンス
ホームSystem.RemoteDesktop › WTSUSERCONFIGA

WTSUSERCONFIGA

構造体
サイズx64: 1100 バイト / x86: 1100 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
SourceDWORD4+0+0構成情報の取得元を示す値。
InheritInitialProgramDWORD4+4+4初期プログラム設定を継承するかを示す。
AllowLogonTerminalServerDWORD4+8+8ターミナルサーバーへのログオンを許可するか。
TimeoutSettingsConnectionsDWORD4+12+12接続セッションのタイムアウト時間。分単位で表す。
TimeoutSettingsDisconnectionsDWORD4+16+16切断セッションのタイムアウト時間。分単位で表す。
TimeoutSettingsIdleDWORD4+20+20アイドルセッションのタイムアウト時間。分単位で表す。
DeviceClientDrivesDWORD4+24+24クライアントドライブを接続するかを示す。
DeviceClientPrintersDWORD4+28+28クライアントプリンタを接続するかを示す。
ClientDefaultPrinterDWORD4+32+32クライアントの既定プリンタを使用するかを示す。
BrokenTimeoutSettingsDWORD4+36+36接続断時のタイムアウト動作設定を示す値。
ReconnectSettingsDWORD4+40+40再接続を許可する範囲の設定を示す値。
ShadowingSettingsDWORD4+44+44セッションシャドウ(監視)の設定を示す値。
TerminalServerRemoteHomeDirDWORD4+48+48リモートホームディレクトリを使用するかを示す。
InitialProgramCHAR261+52+52起動時に実行する初期プログラム(ANSI)。
WorkDirectoryCHAR261+313+313作業ディレクトリのパス(ANSI)。
TerminalServerProfilePathCHAR261+574+574ターミナルサーバープロファイルのパス(ANSI)。
TerminalServerHomeDirCHAR261+835+835ターミナルサーバーのホームディレクトリ(ANSI)。
TerminalServerHomeDirDriveCHAR4+1096+1096ホームディレクトリのドライブ文字(ANSI)。

各言語での定義

#include <windows.h>

// WTSUSERCONFIGA  (x64 1100 / x86 1100 バイト)
typedef struct WTSUSERCONFIGA {
    DWORD Source;
    DWORD InheritInitialProgram;
    DWORD AllowLogonTerminalServer;
    DWORD TimeoutSettingsConnections;
    DWORD TimeoutSettingsDisconnections;
    DWORD TimeoutSettingsIdle;
    DWORD DeviceClientDrives;
    DWORD DeviceClientPrinters;
    DWORD ClientDefaultPrinter;
    DWORD BrokenTimeoutSettings;
    DWORD ReconnectSettings;
    DWORD ShadowingSettings;
    DWORD TerminalServerRemoteHomeDir;
    CHAR InitialProgram[261];
    CHAR WorkDirectory[261];
    CHAR TerminalServerProfilePath[261];
    CHAR TerminalServerHomeDir[261];
    CHAR TerminalServerHomeDirDrive[4];
} WTSUSERCONFIGA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WTSUSERCONFIGA
{
    public uint Source;
    public uint InheritInitialProgram;
    public uint AllowLogonTerminalServer;
    public uint TimeoutSettingsConnections;
    public uint TimeoutSettingsDisconnections;
    public uint TimeoutSettingsIdle;
    public uint DeviceClientDrives;
    public uint DeviceClientPrinters;
    public uint ClientDefaultPrinter;
    public uint BrokenTimeoutSettings;
    public uint ReconnectSettings;
    public uint ShadowingSettings;
    public uint TerminalServerRemoteHomeDir;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 261)] public sbyte[] InitialProgram;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 261)] public sbyte[] WorkDirectory;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 261)] public sbyte[] TerminalServerProfilePath;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 261)] public sbyte[] TerminalServerHomeDir;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public sbyte[] TerminalServerHomeDirDrive;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WTSUSERCONFIGA
    Public Source As UInteger
    Public InheritInitialProgram As UInteger
    Public AllowLogonTerminalServer As UInteger
    Public TimeoutSettingsConnections As UInteger
    Public TimeoutSettingsDisconnections As UInteger
    Public TimeoutSettingsIdle As UInteger
    Public DeviceClientDrives As UInteger
    Public DeviceClientPrinters As UInteger
    Public ClientDefaultPrinter As UInteger
    Public BrokenTimeoutSettings As UInteger
    Public ReconnectSettings As UInteger
    Public ShadowingSettings As UInteger
    Public TerminalServerRemoteHomeDir As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=261)> Public InitialProgram() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=261)> Public WorkDirectory() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=261)> Public TerminalServerProfilePath() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=261)> Public TerminalServerHomeDir() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public TerminalServerHomeDirDrive() As SByte
End Structure
import ctypes
from ctypes import wintypes

class WTSUSERCONFIGA(ctypes.Structure):
    _fields_ = [
        ("Source", wintypes.DWORD),
        ("InheritInitialProgram", wintypes.DWORD),
        ("AllowLogonTerminalServer", wintypes.DWORD),
        ("TimeoutSettingsConnections", wintypes.DWORD),
        ("TimeoutSettingsDisconnections", wintypes.DWORD),
        ("TimeoutSettingsIdle", wintypes.DWORD),
        ("DeviceClientDrives", wintypes.DWORD),
        ("DeviceClientPrinters", wintypes.DWORD),
        ("ClientDefaultPrinter", wintypes.DWORD),
        ("BrokenTimeoutSettings", wintypes.DWORD),
        ("ReconnectSettings", wintypes.DWORD),
        ("ShadowingSettings", wintypes.DWORD),
        ("TerminalServerRemoteHomeDir", wintypes.DWORD),
        ("InitialProgram", ctypes.c_byte * 261),
        ("WorkDirectory", ctypes.c_byte * 261),
        ("TerminalServerProfilePath", ctypes.c_byte * 261),
        ("TerminalServerHomeDir", ctypes.c_byte * 261),
        ("TerminalServerHomeDirDrive", ctypes.c_byte * 4),
    ]
#[repr(C)]
pub struct WTSUSERCONFIGA {
    pub Source: u32,
    pub InheritInitialProgram: u32,
    pub AllowLogonTerminalServer: u32,
    pub TimeoutSettingsConnections: u32,
    pub TimeoutSettingsDisconnections: u32,
    pub TimeoutSettingsIdle: u32,
    pub DeviceClientDrives: u32,
    pub DeviceClientPrinters: u32,
    pub ClientDefaultPrinter: u32,
    pub BrokenTimeoutSettings: u32,
    pub ReconnectSettings: u32,
    pub ShadowingSettings: u32,
    pub TerminalServerRemoteHomeDir: u32,
    pub InitialProgram: [i8; 261],
    pub WorkDirectory: [i8; 261],
    pub TerminalServerProfilePath: [i8; 261],
    pub TerminalServerHomeDir: [i8; 261],
    pub TerminalServerHomeDirDrive: [i8; 4],
}
import "golang.org/x/sys/windows"

type WTSUSERCONFIGA struct {
	Source uint32
	InheritInitialProgram uint32
	AllowLogonTerminalServer uint32
	TimeoutSettingsConnections uint32
	TimeoutSettingsDisconnections uint32
	TimeoutSettingsIdle uint32
	DeviceClientDrives uint32
	DeviceClientPrinters uint32
	ClientDefaultPrinter uint32
	BrokenTimeoutSettings uint32
	ReconnectSettings uint32
	ShadowingSettings uint32
	TerminalServerRemoteHomeDir uint32
	InitialProgram [261]int8
	WorkDirectory [261]int8
	TerminalServerProfilePath [261]int8
	TerminalServerHomeDir [261]int8
	TerminalServerHomeDirDrive [4]int8
}
type
  WTSUSERCONFIGA = record
    Source: DWORD;
    InheritInitialProgram: DWORD;
    AllowLogonTerminalServer: DWORD;
    TimeoutSettingsConnections: DWORD;
    TimeoutSettingsDisconnections: DWORD;
    TimeoutSettingsIdle: DWORD;
    DeviceClientDrives: DWORD;
    DeviceClientPrinters: DWORD;
    ClientDefaultPrinter: DWORD;
    BrokenTimeoutSettings: DWORD;
    ReconnectSettings: DWORD;
    ShadowingSettings: DWORD;
    TerminalServerRemoteHomeDir: DWORD;
    InitialProgram: array[0..260] of Shortint;
    WorkDirectory: array[0..260] of Shortint;
    TerminalServerProfilePath: array[0..260] of Shortint;
    TerminalServerHomeDir: array[0..260] of Shortint;
    TerminalServerHomeDirDrive: array[0..3] of Shortint;
  end;
const WTSUSERCONFIGA = extern struct {
    Source: u32,
    InheritInitialProgram: u32,
    AllowLogonTerminalServer: u32,
    TimeoutSettingsConnections: u32,
    TimeoutSettingsDisconnections: u32,
    TimeoutSettingsIdle: u32,
    DeviceClientDrives: u32,
    DeviceClientPrinters: u32,
    ClientDefaultPrinter: u32,
    BrokenTimeoutSettings: u32,
    ReconnectSettings: u32,
    ShadowingSettings: u32,
    TerminalServerRemoteHomeDir: u32,
    InitialProgram: [261]i8,
    WorkDirectory: [261]i8,
    TerminalServerProfilePath: [261]i8,
    TerminalServerHomeDir: [261]i8,
    TerminalServerHomeDirDrive: [4]i8,
};
type
  WTSUSERCONFIGA {.bycopy.} = object
    Source: uint32
    InheritInitialProgram: uint32
    AllowLogonTerminalServer: uint32
    TimeoutSettingsConnections: uint32
    TimeoutSettingsDisconnections: uint32
    TimeoutSettingsIdle: uint32
    DeviceClientDrives: uint32
    DeviceClientPrinters: uint32
    ClientDefaultPrinter: uint32
    BrokenTimeoutSettings: uint32
    ReconnectSettings: uint32
    ShadowingSettings: uint32
    TerminalServerRemoteHomeDir: uint32
    InitialProgram: array[261, int8]
    WorkDirectory: array[261, int8]
    TerminalServerProfilePath: array[261, int8]
    TerminalServerHomeDir: array[261, int8]
    TerminalServerHomeDirDrive: array[4, int8]
struct WTSUSERCONFIGA
{
    uint Source;
    uint InheritInitialProgram;
    uint AllowLogonTerminalServer;
    uint TimeoutSettingsConnections;
    uint TimeoutSettingsDisconnections;
    uint TimeoutSettingsIdle;
    uint DeviceClientDrives;
    uint DeviceClientPrinters;
    uint ClientDefaultPrinter;
    uint BrokenTimeoutSettings;
    uint ReconnectSettings;
    uint ShadowingSettings;
    uint TerminalServerRemoteHomeDir;
    byte[261] InitialProgram;
    byte[261] WorkDirectory;
    byte[261] TerminalServerProfilePath;
    byte[261] TerminalServerHomeDir;
    byte[4] TerminalServerHomeDirDrive;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WTSUSERCONFIGA サイズ: 1100 バイト(x64)
dim st, 275    ; 4byte整数×275(構造体サイズ 1100 / 4 切り上げ)
; Source : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; InheritInitialProgram : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; AllowLogonTerminalServer : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; TimeoutSettingsConnections : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; TimeoutSettingsDisconnections : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; TimeoutSettingsIdle : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; DeviceClientDrives : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; DeviceClientPrinters : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; ClientDefaultPrinter : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; BrokenTimeoutSettings : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; ReconnectSettings : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ShadowingSettings : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; TerminalServerRemoteHomeDir : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; InitialProgram : CHAR (+52, 261byte)  varptr(st)+52 を基点に操作(261byte:入れ子/配列)
; WorkDirectory : CHAR (+313, 261byte)  varptr(st)+313 を基点に操作(261byte:入れ子/配列)
; TerminalServerProfilePath : CHAR (+574, 261byte)  varptr(st)+574 を基点に操作(261byte:入れ子/配列)
; TerminalServerHomeDir : CHAR (+835, 261byte)  varptr(st)+835 を基点に操作(261byte:入れ子/配列)
; TerminalServerHomeDirDrive : CHAR (+1096, 4byte)  varptr(st)+1096 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WTSUSERCONFIGA
    #field int Source
    #field int InheritInitialProgram
    #field int AllowLogonTerminalServer
    #field int TimeoutSettingsConnections
    #field int TimeoutSettingsDisconnections
    #field int TimeoutSettingsIdle
    #field int DeviceClientDrives
    #field int DeviceClientPrinters
    #field int ClientDefaultPrinter
    #field int BrokenTimeoutSettings
    #field int ReconnectSettings
    #field int ShadowingSettings
    #field int TerminalServerRemoteHomeDir
    #field byte InitialProgram 261
    #field byte WorkDirectory 261
    #field byte TerminalServerProfilePath 261
    #field byte TerminalServerHomeDir 261
    #field byte TerminalServerHomeDirDrive 4
#endstruct

stdim st, WTSUSERCONFIGA        ; NSTRUCT 変数を確保
st->Source = 100
mes "Source=" + st->Source