Microsoft Office文檔,即時通訊我的情況:PowerPoint演示文稿,可以有限制的權限。如何以編程方式查明我的代碼對給定文檔有哪些權限?我是誰?如何使用Microsoft Office許可/ UserPermission
所有我能找到在MSDN上有關此主題是: http://msdn.microsoft.com/en-us/library/aa432118.aspx
如果我運行下面的代碼,我得到的是對給定的文檔權限的用戶的列表:
Sub test()
Dim perm As Office.Permission
Set perm = ActivePresentation.Permission
Debug.Print "Enabled=" & perm.Enabled
If perm.Enabled Then
Debug.Print "PermissionFromPolicy=" & perm.PermissionFromPolicy
Debug.Print "PolicyName='" & perm.PolicyName & "'"
Debug.Print "PolicyDescription='" & perm.PolicyDescription & "'"
Dim uperm As Office.UserPermission
For Each uperm In perm
Debug.Print uperm.UserId & ", " & uperm.Permission
Next uperm
End If
End Sub
輸出示例:
Enabled=True
PermissionFromPolicy=False
PolicyName='Do Not Distribute'
PolicyDescription='Permission is currently restricted. Only specified users can access this content.'
[email protected], 64
[email protected], 33
[email protected], 33
的「許可」是位圖的定義,我在微軟的公共COM頭文件中:
enum MsoPermission
{
msoPermissionView = 1,
msoPermissionRead = 1,
msoPermissionEdit = 2,
msoPermissionSave = 4,
msoPermissionExtract = 8,
msoPermissionChange = 15,
msoPermissionPrint = 16,
msoPermissionObjModel = 32,
msoPermissionFullControl = 64,
msoPermissionAllCommon = 127
};
不過,這並不告訴我我的代碼具有哪些特定的權限。如果我只知道我是誰(根據UserPermission.UserId),我可以在Permission對象中查找我的權限。但我無法找到那一點信息。我錯過了什麼?
有已知的方式獲得Windows用戶名(即Windows機器上的當前用戶的登錄名)。不幸的是,這不是在PowerPoint決定我在文檔上擁有哪些權限時檢查的用戶標識。要強調:PowerPoint提供了一個UI,可以讓我在運行時更改「我是誰」。顯然,這不會改變登錄使用名稱(即,由ADVAPI返回的名稱)。用戶名稱PowerPoint指的是,通過微軟的Passport識別/授權。
在此先感謝!
沃爾克
啊,這個古老的問題「我是誰?」。總是跟着「我在這裏做什麼?」和其他重要的哲學問題,都歸結爲「生命,宇宙和一切」。你知道它只是從那裏陷入無盡的尋找最好的終極架構來回答它。唉,這一切都是徒勞的,因爲我們都知道答案,但無法理解它的重要性。 (這是42,因爲你不得不問...) – 2009-12-18 15:39:15