Information Rights Management の設定を操作する
Microsoft InfoPath には、2 種類の Information Rights Management (IRM) 設定があります。1 つは InfoPath フォーム テンプレートへのアクセスを保護する設定、もう 1 つは入力されたフォームに含まれるフォーム データへのアクセスとその操作を制御する設定です。
注:
[!メモ] アクセス許可の制限は、InfoPath エディターと互換性のあるフォーム テンプレートのみで利用できます。 ブラウザー互換のフォーム テンプレートでは、IRM はサポートされません。
クイック アクセス ツール バーへの [資格情報の管理] コマンドの追加
フォーム テンプレートのデザインが既定で利用できない場合に、以前は [ 資格情報の管理] コマンドを使用して IRM 設定を操作していました。 このコマンドを [クイック アクセス ツール バー] に追加するには、次の手順に従います。
クイック アクセス ツール バーに [資格情報の管理] コマンドを追加する
[ クイック アクセス ツール バー] の右端の矢印をクリックして [ クイック アクセス ツール バーのユーザー設定] メニューを表示し、[ その他のコマンド] をクリックします。
[ コマンドの選択] の一覧から、[ すべてのコマンド] を選択します。
[ 資格情報の管理] が表示されるまでスクロールして [ 追加] をクリックします。
[ 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 |
ユーザーによるフォームの表示、編集、コピー、および保存を許可しますが、印刷は許可しません。 Read、 Edit、 Save、および 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