ホーム › System.RemoteDesktop › WTSUSERCONFIGW
WTSUSERCONFIGW
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Source | DWORD | 4 | +0 | +0 | 構成情報の取得元を示す値。 |
| InheritInitialProgram | DWORD | 4 | +4 | +4 | 初期プログラム設定を継承するかを示す。 |
| AllowLogonTerminalServer | DWORD | 4 | +8 | +8 | ターミナルサーバーへのログオンを許可するか。 |
| TimeoutSettingsConnections | DWORD | 4 | +12 | +12 | 接続セッションのタイムアウト時間。分単位で表す。 |
| TimeoutSettingsDisconnections | DWORD | 4 | +16 | +16 | 切断セッションのタイムアウト時間。分単位で表す。 |
| TimeoutSettingsIdle | DWORD | 4 | +20 | +20 | アイドルセッションのタイムアウト時間。分単位で表す。 |
| DeviceClientDrives | DWORD | 4 | +24 | +24 | クライアントドライブを接続するかを示す。 |
| DeviceClientPrinters | DWORD | 4 | +28 | +28 | クライアントプリンタを接続するかを示す。 |
| ClientDefaultPrinter | DWORD | 4 | +32 | +32 | クライアントの既定プリンタを使用するかを示す。 |
| BrokenTimeoutSettings | DWORD | 4 | +36 | +36 | 接続断時のタイムアウト動作設定を示す値。 |
| ReconnectSettings | DWORD | 4 | +40 | +40 | 再接続を許可する範囲の設定を示す値。 |
| ShadowingSettings | DWORD | 4 | +44 | +44 | セッションシャドウ(監視)の設定を示す値。 |
| TerminalServerRemoteHomeDir | DWORD | 4 | +48 | +48 | リモートホームディレクトリを使用するかを示す。 |
| InitialProgram | WCHAR | 522 | +52 | +52 | 起動時に実行する初期プログラム(Unicode)。 |
| WorkDirectory | WCHAR | 522 | +574 | +574 | 作業ディレクトリのパス(Unicode)。 |
| TerminalServerProfilePath | WCHAR | 522 | +1096 | +1096 | ターミナルサーバープロファイルのパス(Unicode)。 |
| TerminalServerHomeDir | WCHAR | 522 | +1618 | +1618 | ターミナルサーバーのホームディレクトリ(Unicode)。 |
| TerminalServerHomeDirDrive | WCHAR | 8 | +2140 | +2140 | ホームディレクトリのドライブ文字(Unicode)。 |
各言語での定義
#include <windows.h>
// WTSUSERCONFIGW (x64 2148 / x86 2148 バイト)
typedef struct WTSUSERCONFIGW {
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;
WCHAR InitialProgram[261];
WCHAR WorkDirectory[261];
WCHAR TerminalServerProfilePath[261];
WCHAR TerminalServerHomeDir[261];
WCHAR TerminalServerHomeDirDrive[4];
} WTSUSERCONFIGW;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WTSUSERCONFIGW
{
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.ByValTStr, SizeConst = 261)] public string InitialProgram;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 261)] public string WorkDirectory;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 261)] public string TerminalServerProfilePath;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 261)] public string TerminalServerHomeDir;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)] public string TerminalServerHomeDirDrive;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WTSUSERCONFIGW
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.ByValTStr, SizeConst:=261)> Public InitialProgram As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=261)> Public WorkDirectory As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=261)> Public TerminalServerProfilePath As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=261)> Public TerminalServerHomeDir As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=4)> Public TerminalServerHomeDirDrive As String
End Structureimport ctypes
from ctypes import wintypes
class WTSUSERCONFIGW(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_wchar * 261),
("WorkDirectory", ctypes.c_wchar * 261),
("TerminalServerProfilePath", ctypes.c_wchar * 261),
("TerminalServerHomeDir", ctypes.c_wchar * 261),
("TerminalServerHomeDirDrive", ctypes.c_wchar * 4),
]#[repr(C)]
pub struct WTSUSERCONFIGW {
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: [u16; 261],
pub WorkDirectory: [u16; 261],
pub TerminalServerProfilePath: [u16; 261],
pub TerminalServerHomeDir: [u16; 261],
pub TerminalServerHomeDirDrive: [u16; 4],
}import "golang.org/x/sys/windows"
type WTSUSERCONFIGW 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]uint16
WorkDirectory [261]uint16
TerminalServerProfilePath [261]uint16
TerminalServerHomeDir [261]uint16
TerminalServerHomeDirDrive [4]uint16
}type
WTSUSERCONFIGW = 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 WideChar;
WorkDirectory: array[0..260] of WideChar;
TerminalServerProfilePath: array[0..260] of WideChar;
TerminalServerHomeDir: array[0..260] of WideChar;
TerminalServerHomeDirDrive: array[0..3] of WideChar;
end;const WTSUSERCONFIGW = 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]u16,
WorkDirectory: [261]u16,
TerminalServerProfilePath: [261]u16,
TerminalServerHomeDir: [261]u16,
TerminalServerHomeDirDrive: [4]u16,
};type
WTSUSERCONFIGW {.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, uint16]
WorkDirectory: array[261, uint16]
TerminalServerProfilePath: array[261, uint16]
TerminalServerHomeDir: array[261, uint16]
TerminalServerHomeDirDrive: array[4, uint16]struct WTSUSERCONFIGW
{
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;
wchar[261] InitialProgram;
wchar[261] WorkDirectory;
wchar[261] TerminalServerProfilePath;
wchar[261] TerminalServerHomeDir;
wchar[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 レイアウト)
; WTSUSERCONFIGW サイズ: 2148 バイト(x64)
dim st, 537 ; 4byte整数×537(構造体サイズ 2148 / 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 : WCHAR (+52, 522byte) varptr(st)+52 を基点に操作(522byte:入れ子/配列)
; WorkDirectory : WCHAR (+574, 522byte) varptr(st)+574 を基点に操作(522byte:入れ子/配列)
; TerminalServerProfilePath : WCHAR (+1096, 522byte) varptr(st)+1096 を基点に操作(522byte:入れ子/配列)
; TerminalServerHomeDir : WCHAR (+1618, 522byte) varptr(st)+1618 を基点に操作(522byte:入れ子/配列)
; TerminalServerHomeDirDrive : WCHAR (+2140, 8byte) varptr(st)+2140 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WTSUSERCONFIGW
#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 wchar InitialProgram 261
#field wchar WorkDirectory 261
#field wchar TerminalServerProfilePath 261
#field wchar TerminalServerHomeDir 261
#field wchar TerminalServerHomeDirDrive 4
#endstruct
stdim st, WTSUSERCONFIGW ; NSTRUCT 変数を確保
st->Source = 100
mes "Source=" + st->Source