Information Rights Management の設定を操作する

Microsoft InfoPath には、2 種類の Information Rights Management (IRM) 設定があります。1 つは InfoPath フォーム テンプレートへのアクセスを保護する設定、もう 1 つは入力されたフォームに含まれるフォーム データへのアクセスとその操作を制御する設定です。

注:

[!メモ] アクセス許可の制限は、InfoPath エディターと互換性のあるフォーム テンプレートのみで利用できます。 ブラウザー互換のフォーム テンプレートでは、IRM はサポートされません。

クイック アクセス ツール バーへの [資格情報の管理] コマンドの追加

フォーム テンプレートのデザインが既定で利用できない場合に、以前は [ 資格情報の管理] コマンドを使用して IRM 設定を操作していました。 このコマンドを [クイック アクセス ツール バー] に追加するには、次の手順に従います。

クイック アクセス ツール バーに [資格情報の管理] コマンドを追加する

  1. [ クイック アクセス ツール バー] の右端の矢印をクリックして [ クイック アクセス ツール バーのユーザー設定] メニューを表示し、[ その他のコマンド] をクリックします。

  2. [ コマンドの選択] の一覧から、[ すべてのコマンド] を選択します。

  3. [ 資格情報の管理] が表示されるまでスクロールして [ 追加] をクリックします。

  4. [ OK] をクリックします。

InfoPath の [ 資格情報の管理] コマンドおよび [ アクセス許可] ダイアログ ボックスの使用方法の詳細については、InfoPath ヘルプで「アクセス制限のあるフォーム テンプレートを作成する」を参照してください。

IRM オブジェクト モデル

Permission クラスを使用して UserPermissionCollection およびフォームに適用できる IRM アクセス許可設定にアクセスします。 フォーム テンプレートに関連付けられた Permission オブジェクトにアクセスするには、 XmlForm クラスの Permission プロパティを使用します。 返される Permission オブジェクトにより、フォーム テンプレートおよびそのテンプレートによって作成される各フォーム インスタンスに関連付けられた UserPermission オブジェクトのコレクションへのアクセスが可能になります。

Permission オブジェクトおよびそのプロパティとメソッドは、アクティブなフォーム テンプレートでアクセス許可が制限されているかどうかにかかわらず利用できます。 フォームのアクセス許可が制限されているかどうかを判断するには、 Enabled プロパティを使用します。

フォームのアクセス許可は、Permission クラスのプロパティとメソッドを使用して、次のいずれかの方法で有効になっています。

Enabled プロパティを true に設定している。

DocumentAuthor プロパティを設定している。

RequestPermissionUrl プロパティを設定している。

StoreLicenses プロパティを true または false に設定している。

ApplyPolicy メソッドを呼び出している。

注:

Windows Rights Management クライアントがユーザーのコンピューターにインストールされていない場合は、 Permission クラスを使用すると、例外が発生します。

フォームで個別のユーザーの IRM 設定をプログラムによって操作するには、 UserPermissionCollection クラスおよび UserPermission クラスを使用します。

UserPermission オブジェクトは、現在のフォームでのアクセス許可のセットを 1 人のユーザーおよびオプションの有効期限日に関連付けます。 現在のフォームにアクセス許可のセットを追加し、ユーザーに付与するには、 UserPermissionCollection クラスの Add メソッドを使用します。 ユーザーおよびユーザーのアクセス許可を削除するには、 UserPermissionCollection クラスの Remove メソッドを使用します。 印刷や有効期限日など、ユーザー インターフェイスを通じて付与される一部のアクセス許可はすべてのユーザーに適用されますが、 UserPermission クラスおよび UserPermissionCollection クラスを使用すると、ユーザーおよびその有効期限日ごとにアクセス許可を割り当てることができます。 このオブジェクト モデルにより、開発者はフォームのアクセス許可設定を列挙し、フォームのユーザーが [ フォームのアクセス許可] 作業ウィンドウまたは [ アクセス許可] ダイアログ ボックスを使用しなくても、フォームにアクセス許可を追加できるようにします。

注:

フォームがプレビュー モードの場合、アクセス許可を適用できません。 このため、フォームがプレビューされている場合、 Permission クラスのすべてのプロパティは読み取り専用です。 プレビュー モードでは、 Enabled プロパティは常に false を返し、コードがこの設定を変更しようとすると、 System.Runtime.InteropServices.COMException が発生し、"プロパティ/メソッドはプレビュー モードでは使用できません" というエラーが返されます。 同様に、UserPermission クラスと UserPermissionCollection クラスに関連付けられているメソッドも、プレビュー モードで使用すると、このエラー メッセージを返します。

Permission クラスの概要

UserPermissionCollection クラスには次のプロパティと 1 つのメソッドがあります。

名前 説明
ApplyPolicy メソッド
ポリシー テンプレート ファイルを使ってフォームにポリシーを適用します。
DocumentAuthor プロパティ
現在のフォームの作成者を電子メール アドレス形式で取得または設定します。
Enabled プロパティ
Permission オブジェクトによって表されるアクセス許可設定が、現在のフォームで有効になっているかどうかを取得または設定します。
PermissionFromPolicy プロパティ
現在のフォームにアクセス許可ポリシーが適用されているかどうかを取得または設定します。
PolicyDescription プロパティ
現在のフォームに適用されたポリシーの説明を取得します。
PolicyName プロパティ
現在のフォームに適用されたポリシーの名前を取得します。
RequestPermissionUrl プロパティ
現在のフォームで追加のアクセス許可を必要とするユーザー用に、ファイル、URL、または連絡先の電子メール アドレスを取得または設定します。
StoreLicenses プロパティ
現在のフォームを表示するユーザーのライセンスをキャッシュし、ユーザーがアクセス権管理サーバーに接続できないときに、オフラインの表示を許可するかどうかを取得または設定します。
UserPermissions プロパティ
現在のフォームの UserPermissionCollection オブジェクトを取得します。

UserPermissionCollection クラスの概要

UserPermissionCollection クラスには次のプロパティとメソッドがあります。

名前 説明
Add メソッド (+3 オーバーロード)
現在のフォームに新しいユーザーを追加し、オプションでアクセス許可および有効期限日を指定します。
Remove メソッド
指定した UserId を持つ UserPermission オブジェクトをコレクションから削除します。
RemoveAll メソッド
すべての UserPermission オブジェクトをコレクションから削除します。
Count プロパティ
コレクションに含まれている UserPermission オブジェクトの数を取得します。
Item プロパティ (+1 オーバーロード)
UserPermission オブジェクトを取得します。

UserPermission クラスの概要

UserPermission クラスには次のプロパティと 1 つのメソッドがあります。

名前 説明
Remove メソッド
現在の UserPermission オブジェクトをフォームのアクセス許可から削除します。
ExpirationDate プロパティ
UserPermission クラスのインスタンスに関連するユーザーに割り当てられた、現在のフォームでのアクセス許可のオプションの有効期限日を取得または設定します。
Permission プロパティ
UserPermission クラスのインスタンスに関連するユーザーに割り当てられた、現在のフォームのアクセス許可を表す値を取得または設定します。
UserId プロパティ
現在のフォームでのアクセス許可が、指定した UserPermission オブジェクトによって決定されるユーザーの電子メール アドレスを取得します。

PermissionType 列挙型

ユーザーのアクセス許可は、PermissionType 列挙値を使用して設定または読み取られます。

名前 説明
PermissionType.Change
ユーザーによるフォームの表示、編集、コピー、および保存を許可しますが、印刷は許可しません。 ReadEditSave、および Extract のアクセス許可の組み合わせと同等です。
PermissionType.Edit
ユーザーによるフォームの編集を許可します。
PermissionType.Extract
Read アクセス許可を持つユーザーがフォームの内容をコピーすることを許可します。
PermissionType.FullControl
ユーザーがフォームの他のユーザーのアクセス許可を追加、変更、および削除することを許可します。
PermissionType.ObjectModel
ユーザーがオブジェクト モデルを使用してプログラムによってフォーム ドキュメントにアクセスすることを許可します。 ObjectModel アクセス許可のないユーザーは、オブジェクト モデルを使用してユーザー自身のアクセス許可を決定することができません。
PermissionType.Print
ユーザーによるフォームの印刷を許可します。
PermissionType.Read
ユーザーがフォームを読み取り (表示) できるようにします。 (読み取りと表示のアクセス許可は同等です)。
PermissionType.Save
ユーザーによるフォームの保存を許可します。
PermissionType.View
ユーザーがフォームを表示 (読み取り) できるようにします。 (読み取りと表示のアクセス許可は同等です)。

次の例では、[ ボタン] コントロールをクリックすると、現在のフォームの UserPermissionsCollection が取得され、Change アクセス レベルにユーザーが追加されて割り当てられ、有効期限日が現在の日付から 2 日後に設定されます。

public void CTRL1_Clicked(object sender, ClickedEventArgs e)
{
   string strExpirationDate = DateTime.Today.AddDays(2).ToString();
   DateTime dtExpirationDate = DateTime.Parse(strExpirationDate);
   this.Permission.UserPermissions.Add("someone@example.com", 
      PermissionType.Change, dtExpirationDate);
}
Public Sub CTRL1_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   Dim strExpirationDate As String = _
      DateTime.Today.AddDays(2).ToString()
   dtExpirationDate As DateTime = DateTime.Parse(strExpirationDate)
   Me.Permission.UserPermissions.Add("someone@example.com", _
      PermissionType.Change, dtExpirationDate)
End Sub