![快速获取组员资格,第1张 快速获取组员资格,第1张](/aiimages/%E5%BF%AB%E9%80%9F%E8%8E%B7%E5%8F%96%E7%BB%84%E5%91%98%E8%B5%84%E6%A0%BC.png)
概述快速
获取组员资格 @H_301_0@我想弄清楚是否当前的windows用户是本地pipe理员或可以使用UAC来“获得”该组成员。@H_301_0@我到目前为止所看到的是这样的:@H_301_0@var adminIDentifIEr = new SecurityIDentifIEr("S-1-5-32-544"); var current = windowsIDentity.GetCurrent(); bool isadmin = current.Groups.Contains(adminIDentifIEr); bool canBeadmin = isadmin; if (!isadmin) { var adminGroupname = adminIDentifIEr.Translate(typeof(NTAccount)).Value; adminGroupname = adminGroupname.Substring(adminGroupname.LastIndexOf('\')); string path = "WinNT://./" + adminGroupname + ",group"; using (DirectoryEntry groupEntry = new DirectoryEntry(path)) { foreach (object member in (IEnumerable)groupEntry.Invoke("Members")) { using (DirectoryEntry memberEntry = new DirectoryEntry(member)) { object obVal = memberEntry.PropertIEs["objectSID"].Value; SecurityIDentifIEr sID = null; if (null != obVal) { sID = new SecurityIDentifIEr((Byte[])obVal,0); } canBeadmin = Equals(current.User,sID); if (canBeadmin) break; } } } } Console.Writeline(canBeadmin +" "+isadmin);@H_301_0@这个解决scheme需要几毫秒来计算。 比我以前尝试的基于System.DirectoryServices.AccountManagement的方法快得多。@H_301_0@尽pipe如此,还有最后一件事让我困扰。 我必须将pipe理员组的SecurityIDentifIEr转换为名称。 应该有一种方法可以直接使用SID来获取DirectoryEntry。 根据谷歌,这应该工作:@H_301_0@通过JsON文件的用户反序列化指定的对象@H_301_0@拦截MS windows的“SendTo”菜单调用?@H_301_0@如何允许外部加载项与.net 3.0应用程序轻松接口?@H_301_0@如何使用C#代码获取IIS虚拟目录和Web应用程序的物理path?@H_301_0@无法将IStorageItem投射到Storagefile@H_301_0@string path = "LDAP://<SID=" + adminIDentifIEr.ToString() + ">";@H_301_0@但是,这似乎并不奏效。 任何想法的语法应该是什么样子?@H_301_0@在窗户上的qyoto@H_301_0@对于您可以创build和启动的Process对象的数量是否有windows限制?@H_301_0@需要math库的序列/范围的 *** 作@H_301_0@服务无法启动。 服务进程无法连接到服务控制器@H_301_0@在windows 8中检测重启 – 未调用SessionEnding@H_301_0@你有没有尝试windowsPrincipal.IsInRole ?@H_301_0@windowsPrincipal wp = new windowsPrincipal(windowsIDentity.GetCurrent()); wp.IsInRole(new SecurityIDentifIEr("S-1-5-32-544")); wp.IsInRole(windowsBuiltInRole.administrator);@H_301_0@您是否尝试过使用与当前用户对应的UserPrincipal对象上的GetAuthorizationGroups? 如果GetAuthorizationGroups不包括机器本地组,则可能需要检查用户是否直接位于本地管理员组中,或者本地管理员组是否包含用户所在的任何授权组。 我还没有尝试过机器上下文,所以我不知道是否你还需要搜索后者匹配的域上下文,如果它不使用域/全局/通用组计算本地组成员使用机器上下文。@H_301_0@这应该是你想要的,除非我误解了:@H_301_0@var groupname = adminIDentifIEr.Translate(typeof(NTAccount)).Value; 总结
以上是内存溢出为你收集整理的快速获取组员资格全部内容,希望文章能够帮你解决快速获取组员资格所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)