IFsrmSetting
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
FSRM を構成するために使用します。
解説(Remarks)
スクリプトからこのオブジェクトを作成するには、プログラム識別子 "Fsrm.FsrmSetting" を使用します。
例
次の例は、このインターフェイスのプロパティを取得する方法を示しています。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <comutil.h>
#include <fsrm.h> // FSRM base objects and collections
#include <fsrmtlb_i.c> // contains CLSIDs
//
// Print the FSRM configuration settings.
//
void wmain(void)
{
HRESULT hr = 0;
IFsrmSetting* pSettings = NULL;
BSTR bstr = NULL;
VARIANT_BOOL boolVal = VARIANT_FALSE;
long interval = 0;
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr))
{
wprintf(L"CoInitializeEx() failed, 0x%x.\n", hr);
exit(1);
}
hr = CoCreateInstance(CLSID_FsrmSetting,
NULL,
CLSCTX_LOCAL_SERVER,
__uuidof(IFsrmSetting),
reinterpret_cast<void**> (&pSettings));
if (FAILED(hr))
{
wprintf(L"CoCreateInstance(FsrmSetting) failed, 0x%x.\n", hr);
if (E_ACCESSDENIED == hr)
wprintf(L"Access denied. You must run the client with an elevated token.\n");
goto cleanup;
}
wprintf(L"Successfully created Setting object.\n");
// Get the default email address for the administrator. If set, you
// can then use the [Admin Email] macro for any action or report
// email address.
hr = pSettings->get_AdminEmail(&bstr);
if (FAILED(hr))
{
wprintf(L"pSettings->get_AdminEmail failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"AdminEmail: %s\n", bstr);
SysFreeString(bstr);
// Determines whether FSRM allows command actions to execute. The default
// is execute command actions.
hr = pSettings->get_DisableCommandLine(&boolVal);
if (FAILED(hr))
{
wprintf(L"pSettings->get_DisableCommandLine failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"DisableCommandLine: %s\n", (VARIANT_TRUE == boolVal) ? L"True" : L"False");
// Determines whether FSRM keeps audit records for file screen IO violations.
// The default is not to keep audit records.
hr = pSettings->get_EnableScreeningAudit(&boolVal);
if (FAILED(hr))
{
wprintf(L"pSettings->get_EnableScreeningAudit failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"EnableScreeningAudit: %s\n", (VARIANT_TRUE == boolVal) ? L"True" : L"False");
// The default address from which reports and email actions are sent.
// If set, you do not have to set the IFsrmActionEmail::MailFrom property.
// The default is FSRM@<localdomain>
hr = pSettings->get_MailFrom(&bstr);
if (FAILED(hr))
{
wprintf(L"pSettings->get_MailFrom failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"MailFrom: %s\n", bstr);
SysFreeString(bstr);
// Get the SMTP server. If not set, email is not sent.
hr = pSettings->get_SmtpServer(&bstr);
if (FAILED(hr))
{
wprintf(L"pSettings->get_SmtpServer failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"SmtpServer: %s\n", bstr);
SysFreeString(bstr);
// Each action can specify an interval to wait before executing the action again.
// The default for each action is 60 minutes.
wprintf(L"Default interval, in minutes, to wait between executing an action:\n");
hr = pSettings->GetActionRunLimitInterval(FsrmActionType_EventLog, &interval);
if (FAILED(hr))
{
wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_EventLog) failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"\tEventLog interval: %ld\n", interval);
hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Email, &interval);
if (FAILED(hr))
{
wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Email) failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"\tEmail interval: %ld\n", interval);
hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Command, &interval);
if (FAILED(hr))
{
wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Command) failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"\tCommand interval: %ld\n", interval);
hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Report, &interval);
if (FAILED(hr))
{
wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Report) failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"\tReport interval: %ld\n", interval);
hr = pSettings->put_SmtpServer(_bstr_t(L"<FQDNOFSMTPSERVER>"));
if (FAILED(hr))
{
wprintf(L"pSettings->put_SmtpServer failed, 0x%x.\n", hr);
goto cleanup;
}
cleanup:
if (pSettings)
pSettings->Release();
CoUninitialize();
}
メソッド 13
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
FSRM がメールの送信に使用する SMTP サーバーを取得または設定します。(Get)
| smtpServer | LPWSTR* | out | 通知メール送信に使用する SMTP サーバー名を受け取るポインタである。 |
解説(Remarks)
FSRM がメールを送信するには、このプロパティを設定する必要があります。設定を検証するには、 IFsrmSetting::EmailTest メソッドを呼び出します。
例
例については、 IFsrmSetting::EmailTest を参照してください。
FSRM がメールの送信に使用する SMTP サーバーを取得または設定します。(Put)
| smtpServer | LPWSTR | in | 設定する SMTP サーバー名を指定するポインタである。 |
解説(Remarks)
FSRM がメールを送信するには、このプロパティを設定する必要があります。設定を検証するには、 IFsrmSetting::EmailTest メソッドを呼び出します。
例
例については、 IFsrmSetting::EmailTest を参照してください。
メールメッセージの送信元として使用される既定のメールアドレスを取得または設定します。(Get)
| mailFrom | LPWSTR* | out | 既定の送信元メールアドレスを受け取るポインタである。 |
解説(Remarks)
既定値は " FSRM@ローカルコンピューター名" です。このプロパティに "[Admin Email]" を設定することはできません。
例
例については、IFsrmSetting を参照してください。
メールメッセージの送信元として使用される既定のメールアドレスを取得または設定します。(Put)
| mailFrom | LPWSTR | in | 設定する既定の送信元メールアドレスを指定するポインタである。 |
解説(Remarks)
既定値は " FSRM@ローカルコンピューター名" です。このプロパティに "[Admin Email]" を設定することはできません。
例
例については、IFsrmSetting を参照してください。
管理者のメールアドレスを取得または設定します。(Get)
| adminEmail | LPWSTR* | out | 管理者の通知用メールアドレスを受け取るポインタである。 |
解説(Remarks)
管理者のメールアドレスを取得または設定します。(Put)
| adminEmail | LPWSTR | in | 設定する管理者の通知用メールアドレスを指定するポインタである。 |
解説(Remarks)
FSRM がコマンドラインアクションの実行を禁止するかどうかを決定する値を取得または設定します。(Get)
| disableCommandLine | VARIANT_BOOL* | out | コマンド実行アクションを無効にするかどうかを受け取る VARIANT_BOOL へのポインタである。 |
FSRM がコマンドラインアクションの実行を禁止するかどうかを決定する値を取得または設定します。(Put)
| disableCommandLine | VARIANT_BOOL | in | コマンド実行アクションを無効にするかどうかを指定する VARIANT_BOOL である。 |
FSRM がファイルスクリーン違反の監査レコードを保持するかどうかを決定する値を取得または設定します。(Get)
| enableScreeningAudit | VARIANT_BOOL* | out | ファイルスクリーニングの監査を有効にするかどうかを受け取る VARIANT_BOOL へのポインタである。 |
解説(Remarks)
監査レコードは File Screen Audit レポートに含まれます。監査レコードには次の項目が含まれます。
- フォルダーのパス
- ID
- ブロックされたファイルグループ名
- ファイルスクリーンのモード
- 違反が発生した日時のタイムスタンプ
- 禁止された IO を生成したプロセスイメージの名前 (取得できる場合)
- 禁止された IO を発行したユーザープリンシパルの SID (取得できる場合)
- 禁止されたファイルのフルパス
- サーバー名
例
例については、IFsrmSetting を参照してください。
FSRM がファイルスクリーン違反の監査レコードを保持するかどうかを決定する値を取得または設定します。(Put)
| enableScreeningAudit | VARIANT_BOOL | in | ファイルスクリーニングの監査を有効にするかどうかを指定する VARIANT_BOOL である。 |
解説(Remarks)
監査レコードは File Screen Audit レポートに含まれます。監査レコードには次の項目が含まれます。
- フォルダーのパス
- ID
- ブロックされたファイルグループ名
- ファイルスクリーンのモード
- 違反が発生した日時のタイムスタンプ
- 禁止された IO を生成したプロセスイメージの名前 (取得できる場合)
- 禁止された IO を発行したユーザープリンシパルの SID (取得できる場合)
- 禁止されたファイルのフルパス
- サーバー名
例
例については、IFsrmSetting を参照してください。
指定したメールアドレスにメールメッセージを送信します。
| mailTo | LPWSTR | in | メールアドレス。文字列は 255 文字までに制限されます。 |
戻り値
このメソッドは次のリターンコードを返します。
解説(Remarks)
このメソッドは、 SmtpServer プロパティで指定した SMTP サーバーをテストするために使用します。送信元は MailFrom プロパティで指定します ( "[Admin Email]" を設定することはできません)。
件名とメッセージ本文は、あらかじめ定義されたローカライズ済みのテキストです。
例
次の例は、このメソッドを呼び出す方法を示しています。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <comutil.h>
#include <fsrm.h> // FSRM base objects and collections
#include <fsrmtlb_i.c> // contains CLSIDs
//
// Call the IFsrmSetting::EmailTest method to test the SMTP email server.
//
void wmain(void)
{
HRESULT hr = 0;
IFsrmSetting* pSettings = NULL;
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr))
{
wprintf(L"CoInitializeEx() failed, 0x%x.\n", hr);
exit(1);
}
hr = CoCreateInstance(CLSID_FsrmSetting,
NULL,
CLSCTX_LOCAL_SERVER,
__uuidof(IFsrmSetting),
reinterpret_cast<void**> (&pSettings));
if (FAILED(hr))
{
wprintf(L"CoCreateInstance(FsrmSetting) failed, 0x%x.\n", hr);
if (E_ACCESSDENIED == hr)
wprintf(L"Access denied. You must run the client with an elevated token.\n");
goto cleanup;
}
wprintf(L"Successfully created Setting object.\n");
// Specify the SMTP server to use for sending email.
hr = pSettings->put_SmtpServer(_bstr_t(L"<FQDNOFSMTPSERVER>"));
if (FAILED(hr))
{
wprintf(L"pSettings->put_SmtpServer failed, 0x%x.\n", hr);
goto cleanup;
}
// Test the specified SMTP server. If the test succeeds, you will find a
// predefined email message in C:\Inetpub\mailroot\Drop. You can use
// Outlook Express to read the message.
hr = pSettings->EmailTest(_bstr_t(L"admin@<FQDNOFSMTPSERVER>"));
if (FAILED(hr))
{
wprintf(L"pSettings->EmailTest failed, 0x%x.\n", hr);
goto cleanup;
}
wprintf(L"Successfully sent mail.\n");
cleanup:
if (pSettings)
pSettings->Release();
CoUninitialize();
}
グローバルな実行制限間隔を使用するアクションが、再度実行されるまでに待機する時間を設定します。
| actionType | FsrmActionType | in | 制限の対象となるアクションの種類。指定可能な値については、FsrmActionType 列挙型を参照してください。 |
| delayTimeMinutes | INT | in | アクションに使用する実行制限間隔 (分単位)。既定値は 60 分です。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
IFsrmAction::RunLimitInterval プロパティが -1 に設定されているアクションに適用されます。
このプロパティは、グローバルな実行制限間隔が使用される場合に、アクションが再度実行されるまでに経過している必要がある間隔を指定します。たとえば、アクションが前回実行されてからこの間隔が経過している場合、サーバーはイベントに応じてそのアクションを再度実行します。経過していない場合、サーバーはそのアクションを再度実行できません。
グローバルな実行制限間隔を使用するアクションが、再度実行されるまでに待機する時間を取得します。
| actionType | FsrmActionType | in | 制限の対象となるアクションの種類。指定可能な値については、FsrmActionType 列挙型を参照してください。 |
| delayTimeMinutes | INT* | out | アクションに使用されている実行制限間隔 (分単位)。 |
戻り値
次の戻り値を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFsrmSetting "{F411D4FD-14BE-4260-8C40-03B7C95E608A}" #usecom global IFsrmSetting IID_IFsrmSetting "{F556D708-6D4D-4594-9C61-7DBB0DAE2A46}" #comfunc global IFsrmSetting_get_SmtpServer 7 var #comfunc global IFsrmSetting_put_SmtpServer 8 wstr #comfunc global IFsrmSetting_get_MailFrom 9 var #comfunc global IFsrmSetting_put_MailFrom 10 wstr #comfunc global IFsrmSetting_get_AdminEmail 11 var #comfunc global IFsrmSetting_put_AdminEmail 12 wstr #comfunc global IFsrmSetting_get_DisableCommandLine 13 var #comfunc global IFsrmSetting_put_DisableCommandLine 14 int #comfunc global IFsrmSetting_get_EnableScreeningAudit 15 var #comfunc global IFsrmSetting_put_EnableScreeningAudit 16 int #comfunc global IFsrmSetting_EmailTest 17 wstr #comfunc global IFsrmSetting_SetActionRunLimitInterval 18 int,int #comfunc global IFsrmSetting_GetActionRunLimitInterval 19 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFsrmSetting "{F411D4FD-14BE-4260-8C40-03B7C95E608A}" #usecom global IFsrmSetting IID_IFsrmSetting "{F556D708-6D4D-4594-9C61-7DBB0DAE2A46}" #comfunc global IFsrmSetting_get_SmtpServer 7 sptr #comfunc global IFsrmSetting_put_SmtpServer 8 wstr #comfunc global IFsrmSetting_get_MailFrom 9 sptr #comfunc global IFsrmSetting_put_MailFrom 10 wstr #comfunc global IFsrmSetting_get_AdminEmail 11 sptr #comfunc global IFsrmSetting_put_AdminEmail 12 wstr #comfunc global IFsrmSetting_get_DisableCommandLine 13 sptr #comfunc global IFsrmSetting_put_DisableCommandLine 14 int #comfunc global IFsrmSetting_get_EnableScreeningAudit 15 sptr #comfunc global IFsrmSetting_put_EnableScreeningAudit 16 int #comfunc global IFsrmSetting_EmailTest 17 wstr #comfunc global IFsrmSetting_SetActionRunLimitInterval 18 int,int #comfunc global IFsrmSetting_GetActionRunLimitInterval 19 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。