コピー・貼り付けの無効化(C言語)

説明:

メモ帳を三つ起動し、それぞれをジョブオブジェクトに関連付ける。関連付けたら、メモ帳のクリップボードに対する読み込みおよび書き込みをSetInformationJobObjectによって禁止する。

キーワード:

CreateJobObject, AssignProcessToJobObject, SetInformationJobObject

サンプルコード:

/* メモ帳のコピー・貼り付けを無効化する */
void DisableClipboard()
{
	HANDLE hJob;
	HANDLE hProcess[3];
	int i;
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	JOBOBJECT_BASIC_UI_RESTRICTIONS Rest;

	si.cb = sizeof(si);
	si.lpReserved = NULL;
	si.lpDesktop = NULL;
	si.lpTitle = NULL;
	si.dwFlags = 0;
	si.cbReserved2 = 0;
	si.lpReserved2 = NULL;

	/* ジョブオブジェクトの作成 */
	hJob = CreateJobObject(NULL, "Test Job Object");

	/* メモ帳を三つ起動 */
	for(i=0; i<3; i++) {
		CreateProcess(NOTEPAD_PATH, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
		hProcess[i] = pi.hProcess;
	}

	/* 起動したメモ帳をジョブオブジェクトに関連付ける */
	for(i=0; i<3; i++) AssignProcessToJobObject(hJob, hProcess[i]);

	/* 三つのメモ帳のクリップボードに対する読み込み・書き込みを制限する */
	Rest.UIRestrictionsClass = JOB_OBJECT_UILIMIT_READCLIPBOARD | JOB_OBJECT_UILIMIT_WRITECLIPBOARD;
	SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &Rest, sizeof(Rest));

	/* ジョブオブジェクトのクローズ */
	CloseHandle(hJob);
}
(original text:1999/01/11 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。