2015年4月14日火曜日

$KeepPrivateの挙動が変わった?!

今回は私が最近知った、Notesの印刷不可の制御についての話題です。

Notesのアプリケーションへ登録した文書について、その内容を印刷ができないよう制御することができます。

フォームのプロパティでその設定を行うことができますが、そのフォームを使って保存した文書には $KeepPrivate というアイテムにテキスト値の"1"がセットされています。

こうなった文書は権限にかかわらず印刷できなくなります。

さて、この値を"0"(または"")にすると、どうなるかご存知でしょうか?

そうです、印刷できるのです。

何を当たり前のことを…と思ったそこのあなた!
話はこれからですよ!

この印刷させない設定は、ACL(アクセス制御リスト)のエントリでもできます。

ACLエントリで「文書を複製またはコピー」にチェックを付けると、そのエントリに該当する人は印刷できますが、チェックを外したエントリに該当する人は印刷できません。

ところが、ACLで「文書を複製またはコピー」のチェックを外したエントリに該当する人が、$KeepPrivate に"0"(または"") をセットした文書を印刷できる事を最近知りました。注)転送はできませんでした

実はこれ、8.5.1で修正され、仕様が変わってしまったとのこと。

では、ACLで「文書を複製またはコピー」のチェックを外している人が、文書を印刷できなくするにはどうするか。

$KeepPrivate アイテムを削除します。

こうして当方のアプリケーションは想定した挙動をしてくれるようになったのでした。

※Notes 9.0.1 Standard版で確認

1 件のコメント:

  1. へ~、いい事を聞いた!
    ReplaceItemValue じゃなくて RemoveItem に替えなきゃ。

    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document

    If doc.GetItemValue("$KeepPrivate")(0) = "1" Then
    Call doc.ReplaceItemValue("$KeepPrivate", "0")
    Call doc.Save(False, False)
    End If

    返信削除