现在我需要在VC中实现一个功能:判断用户是否有权限执行该运用程序.可是不知道在程序里该调用什么函数判断.(用编程实现)
调查发现System.EnterpriseServices命令空间不能用,所以IsCallerInRole(String* role)和IsUserInRole(String* user,String* role)都不能使用了,请问还有没有其他函数,望各位赐教,小弟不胜感激.
调查发现System.EnterpriseServices命令空间不能用,所以IsCallerInRole(String* role)和IsUserInRole(String* user,String* role)都不能使用了,请问还有没有其他函数,望各位赐教,小弟不胜感激.
Windows的权限管理与Linux不同,在windows中只有角色(role)的概念,Linux下的root用户对应到Windows的管理员角色,所以只要判断执行RCXML或PSMF的用户是否具有管理员的权限,如果具有,继续执行程序,否则,程序异常退出。
实现方法:
1) 用类WindowsIdentity的静态方法GetCurrent(),得到执行RCXML或PSMF的用户的WindowsIdentity对象。
2) 使用1)得到的WindowsIdentity对象构造一个WindowsPrincipal对象。
3) 使用WindowsPrincipal对象的IsInRole方法,根据RID(本地管理员组和域管理员组)来判断该用户是否具有管理员的权限,如果具有,继续执行程序,否则,程序异常退出。
注:
ü 本地管理员组的RID:DOMAIN_ALIAS_RID_ADMINS (WinNT.h中定义)
ü 域管理员组的RID:DOMAIN_GROUP_RID_ADMINS (WinNT.h中定义)
ü Namespace:System.Security.Principal