[方法] Information Rights Management の設定を操作する方法
Microsoft Office InfoPath 2007 には、2 種類の Information Rights Management (IRM) 設定があります。1 つは InfoPath フォーム テンプレートへのアクセスを保護する設定、もう 1 つは入力されたフォームに含まれるフォーム データへのアクセスとその操作を制御する設定です。フォーム テンプレートのデザイン時にこれらの設定を変更するには、[ファイル] メニューの [資格情報の管理] をクリックします。フォームの入力時にこれらの設定を変更するには、[ファイル] メニューの [アクセス許可] をクリックし、[資格情報の管理] をクリックします。InfoPath の [アクセス許可] ダイアログ ボックスの使用方法の詳細については、InfoPath ヘルプで「アクセス制限のあるフォーム テンプレートを作成する」を参照してください。
メモ : |
---|
アクセス許可の制限は、InfoPath と互換性のあるフォーム テンプレートのみで利用できます。ブラウザ互換のフォーム テンプレートでは、IRM はサポートされません。フォーム テンプレートのデザイン時に [ファイル] メニューに [資格情報の管理] が表示されない場合は、互換性の設定を確認してください。 |
IRM オブジェクト モデル
UserPermissionCollection およびフォームに適用できる IRM アクセス許可設定にアクセスするには、Permission クラスを使用します。フォーム テンプレートに関連付けられた 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 |
ユーザーによるフォームの読み取り (表示) を許可します。(Read および View アクセス許可はこれと同等。) |
PermissionType.Save |
ユーザーによるフォームの保存を許可します。 |
PermissionType.View |
ユーザーによるフォームの表示 (読み取り) を許可します。(Read および 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