现在我需要在VC中实现一个功能:判断用户是否有权限执行该运用程序.可是不知道在程序里该调用什么函数判断.(用编程实现)
调查发现System.EnterpriseServices命令空间不能用,所以IsCallerInRole(String* role)和IsUserInRole(String* user,String* role)都不能使用了,请问还有没有其他函数,望各位赐教,小弟不胜感激.

解决方案 »

  1.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfctokenprivileges.asp
      

  2.   

    问题已经解决,判断该用户的组就可以了,NetUserGetGroups这个就可以了,谢谢两位
      

  3.   

    谢谢大家的关注,这个问题又有了新的解决方法,因为NetUserGetGroups函数只能得到组名,要是管理组的名该了,这个方法就不使用,现在采用如下方法:
    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