ホーム › System.GroupPolicy › RsopSetPolicySettingStatus
RsopSetPolicySettingStatus
関数ポリシー設定の適用状態をRSOPに記録する。
シグネチャ
// USERENV.dll
#include <windows.h>
HRESULT RsopSetPolicySettingStatus(
DWORD dwFlags,
IWbemServices* pServices,
IWbemClassObject* pSettingInstance,
DWORD nInfo,
POLICYSETTINGSTATUSINFO* pStatus
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| dwFlags | DWORD | in |
| pServices | IWbemServices* | in |
| pSettingInstance | IWbemClassObject* | in |
| nInfo | DWORD | in |
| pStatus | POLICYSETTINGSTATUSINFO* | in |
戻り値の型: HRESULT
各言語での呼び出し定義
// USERENV.dll
#include <windows.h>
HRESULT RsopSetPolicySettingStatus(
DWORD dwFlags,
IWbemServices* pServices,
IWbemClassObject* pSettingInstance,
DWORD nInfo,
POLICYSETTINGSTATUSINFO* pStatus
);[DllImport("USERENV.dll", ExactSpelling = true)]
static extern int RsopSetPolicySettingStatus(
uint dwFlags, // DWORD
IntPtr pServices, // IWbemServices*
IntPtr pSettingInstance, // IWbemClassObject*
uint nInfo, // DWORD
IntPtr pStatus // POLICYSETTINGSTATUSINFO*
);<DllImport("USERENV.dll", ExactSpelling:=True)>
Public Shared Function RsopSetPolicySettingStatus(
dwFlags As UInteger, ' DWORD
pServices As IntPtr, ' IWbemServices*
pSettingInstance As IntPtr, ' IWbemClassObject*
nInfo As UInteger, ' DWORD
pStatus As IntPtr ' POLICYSETTINGSTATUSINFO*
) As Integer
End Function' dwFlags : DWORD
' pServices : IWbemServices*
' pSettingInstance : IWbemClassObject*
' nInfo : DWORD
' pStatus : POLICYSETTINGSTATUSINFO*
Declare PtrSafe Function RsopSetPolicySettingStatus Lib "userenv" ( _
ByVal dwFlags As Long, _
ByVal pServices As LongPtr, _
ByVal pSettingInstance As LongPtr, _
ByVal nInfo As Long, _
ByVal pStatus As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
RsopSetPolicySettingStatus = ctypes.windll.userenv.RsopSetPolicySettingStatus
RsopSetPolicySettingStatus.restype = ctypes.c_int
RsopSetPolicySettingStatus.argtypes = [
wintypes.DWORD, # dwFlags : DWORD
ctypes.c_void_p, # pServices : IWbemServices*
ctypes.c_void_p, # pSettingInstance : IWbemClassObject*
wintypes.DWORD, # nInfo : DWORD
ctypes.c_void_p, # pStatus : POLICYSETTINGSTATUSINFO*
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('USERENV.dll')
RsopSetPolicySettingStatus = Fiddle::Function.new(
lib['RsopSetPolicySettingStatus'],
[
-Fiddle::TYPE_INT, # dwFlags : DWORD
Fiddle::TYPE_VOIDP, # pServices : IWbemServices*
Fiddle::TYPE_VOIDP, # pSettingInstance : IWbemClassObject*
-Fiddle::TYPE_INT, # nInfo : DWORD
Fiddle::TYPE_VOIDP, # pStatus : POLICYSETTINGSTATUSINFO*
],
Fiddle::TYPE_INT)#[link(name = "userenv")]
extern "system" {
fn RsopSetPolicySettingStatus(
dwFlags: u32, // DWORD
pServices: *mut core::ffi::c_void, // IWbemServices*
pSettingInstance: *mut core::ffi::c_void, // IWbemClassObject*
nInfo: u32, // DWORD
pStatus: *mut POLICYSETTINGSTATUSINFO // POLICYSETTINGSTATUSINFO*
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("USERENV.dll")]
public static extern int RsopSetPolicySettingStatus(uint dwFlags, IntPtr pServices, IntPtr pSettingInstance, uint nInfo, IntPtr pStatus);
"@
$api = Add-Type -MemberDefinition $sig -Name 'USERENV_RsopSetPolicySettingStatus' -Namespace Win32 -PassThru
# $api::RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, pStatus)#uselib "USERENV.dll"
#func global RsopSetPolicySettingStatus "RsopSetPolicySettingStatus" sptr, sptr, sptr, sptr, sptr
; RsopSetPolicySettingStatus dwFlags, pServices, pSettingInstance, nInfo, varptr(pStatus) ; 戻り値は stat
; dwFlags : DWORD -> "sptr"
; pServices : IWbemServices* -> "sptr"
; pSettingInstance : IWbemClassObject* -> "sptr"
; nInfo : DWORD -> "sptr"
; pStatus : POLICYSETTINGSTATUSINFO* -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "USERENV.dll" #cfunc global RsopSetPolicySettingStatus "RsopSetPolicySettingStatus" int, sptr, sptr, int, var ; res = RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, pStatus) ; dwFlags : DWORD -> "int" ; pServices : IWbemServices* -> "sptr" ; pSettingInstance : IWbemClassObject* -> "sptr" ; nInfo : DWORD -> "int" ; pStatus : POLICYSETTINGSTATUSINFO* -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "USERENV.dll" #cfunc global RsopSetPolicySettingStatus "RsopSetPolicySettingStatus" int, sptr, sptr, int, sptr ; res = RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, varptr(pStatus)) ; dwFlags : DWORD -> "int" ; pServices : IWbemServices* -> "sptr" ; pSettingInstance : IWbemClassObject* -> "sptr" ; nInfo : DWORD -> "int" ; pStatus : POLICYSETTINGSTATUSINFO* -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; HRESULT RsopSetPolicySettingStatus(DWORD dwFlags, IWbemServices* pServices, IWbemClassObject* pSettingInstance, DWORD nInfo, POLICYSETTINGSTATUSINFO* pStatus) #uselib "USERENV.dll" #cfunc global RsopSetPolicySettingStatus "RsopSetPolicySettingStatus" int, intptr, intptr, int, var ; res = RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, pStatus) ; dwFlags : DWORD -> "int" ; pServices : IWbemServices* -> "intptr" ; pSettingInstance : IWbemClassObject* -> "intptr" ; nInfo : DWORD -> "int" ; pStatus : POLICYSETTINGSTATUSINFO* -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; HRESULT RsopSetPolicySettingStatus(DWORD dwFlags, IWbemServices* pServices, IWbemClassObject* pSettingInstance, DWORD nInfo, POLICYSETTINGSTATUSINFO* pStatus) #uselib "USERENV.dll" #cfunc global RsopSetPolicySettingStatus "RsopSetPolicySettingStatus" int, intptr, intptr, int, intptr ; res = RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, varptr(pStatus)) ; dwFlags : DWORD -> "int" ; pServices : IWbemServices* -> "intptr" ; pSettingInstance : IWbemClassObject* -> "intptr" ; nInfo : DWORD -> "int" ; pStatus : POLICYSETTINGSTATUSINFO* -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
userenv = windows.NewLazySystemDLL("USERENV.dll")
procRsopSetPolicySettingStatus = userenv.NewProc("RsopSetPolicySettingStatus")
)
// dwFlags (DWORD), pServices (IWbemServices*), pSettingInstance (IWbemClassObject*), nInfo (DWORD), pStatus (POLICYSETTINGSTATUSINFO*)
r1, _, err := procRsopSetPolicySettingStatus.Call(
uintptr(dwFlags),
uintptr(pServices),
uintptr(pSettingInstance),
uintptr(nInfo),
uintptr(pStatus),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction RsopSetPolicySettingStatus(
dwFlags: DWORD; // DWORD
pServices: Pointer; // IWbemServices*
pSettingInstance: Pointer; // IWbemClassObject*
nInfo: DWORD; // DWORD
pStatus: Pointer // POLICYSETTINGSTATUSINFO*
): Integer; stdcall;
external 'USERENV.dll' name 'RsopSetPolicySettingStatus';result := DllCall("USERENV\RsopSetPolicySettingStatus"
, "UInt", dwFlags ; DWORD
, "Ptr", pServices ; IWbemServices*
, "Ptr", pSettingInstance ; IWbemClassObject*
, "UInt", nInfo ; DWORD
, "Ptr", pStatus ; POLICYSETTINGSTATUSINFO*
, "Int") ; return: HRESULT●RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, pStatus) = DLL("USERENV.dll", "int RsopSetPolicySettingStatus(dword, void*, void*, dword, void*)")
# 呼び出し: RsopSetPolicySettingStatus(dwFlags, pServices, pSettingInstance, nInfo, pStatus)
# dwFlags : DWORD -> "dword"
# pServices : IWbemServices* -> "void*"
# pSettingInstance : IWbemClassObject* -> "void*"
# nInfo : DWORD -> "dword"
# pStatus : POLICYSETTINGSTATUSINFO* -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。