列出对 Dynamics ax 2009 中给定表具有权限的所有用户

Posted

技术标签:

【中文标题】列出对 Dynamics ax 2009 中给定表具有权限的所有用户【英文标题】:List all users that have permission for a given table in Dynamics ax 2009 【发布时间】:2018-10-26 11:52:00 【问题描述】:

我有一些自定义表格,几年前由某家公司在我们的环境中实施。

我需要列出用户及其对该表的权限。 我发现了 ACCEs-s-rIGHTSLIST 表,其中包含我想要的所有内容,例如组和关联用户。

问题是此列表不完整,用户可以在我通过 ACCEs-s-rIGHTSLIST 找到的组之外修改/查看此表。

我知道 dicttable.rights() 会做得很好,但我不能在这里指定用户,它只验证正在执行代码的用户。

我基本上需要的是 dicttable.rights(someUserID),但由于我看不到 dicttable 使用什么机制,所以我被卡住了。

我在 AX 2009 工作。

【问题讨论】:

【参考方案1】:

相反,创建一个static server 方法并使用runas 命令调用它,您可以在其中runas 您想要的不同用户。

见:

https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-ref/xpp-session-run-time-functions https://community.dynamics.com/ax/f/33/t/66819

或在系统中搜索示例代码。

【讨论】:

【参考方案2】:

我现在无法访问 AX 2009,但据我记得您应该可以使用系统类 SecurityKeySet。检查以下是否有效:

SecurityKeySet  securityKeySet; 
AccessType      accessType;
UserId          userId      = curUserId();
TableId         tableId     = tableNum(CustTable);
;

securityKeySet = new SecurityKeySet(); 
securityKeySet.loadUserRights(userId);

accessType = securityKeySet.tableAccess(tableId);

info(strFmt('%1', accessType));

【讨论】:

这里有更好的答案。我回答了你的问题,这满足了你的需要。

以上是关于列出对 Dynamics ax 2009 中给定表具有权限的所有用户的主要内容,如果未能解决你的问题,请参考以下文章

Dynamics AX 2012 DLL 配置文件未更新

在我的 wcf 服务中验证 AX 服务器域、用户名和密码等凭据后,下载 Microsoft Dynamics AX 2012 服务 wsdl 元数据

Dynamics AX7 materials

Dynamics AX 2012 R2 AIF 内部异常

关于MS Dynamics AX 和 MS Dynamics CRM实施

Dynamics AX 中的图片处理