首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DirectoryEntry不返回.NET中的组成员,而是在ASP.NET中工作

DirectoryEntry不返回.NET中的组成员,而是在ASP.NET中工作
EN

Stack Overflow用户
提问于 2020-06-04 01:07:09
回答 1查看 120关注 0票数 0

我试图构建一个机器上所有本地组和每个组中所有用户的列表。

这是我正在使用的代码

代码语言:javascript
运行
复制
foreach (string group in groups)
{
    try
    {
        using (DirectoryEntry computerGroupEntry = new DirectoryEntry(string.Format("WinNT://{0}/{1},group", Environment.MachineName, group)))
        {
            foreach (object userG in (IEnumerable)computerGroupEntry.Invoke("Members"))
            {
                DirectoryEntry user = new DirectoryEntry(userG);
                users.Add(group, user.Properties["Name"].Value.ToString());
            }
        }
    }
    catch (Exception)
    { }
}

这在IIS8.1服务器上的ASP.NET中工作得很好。

我试图使用VisualStudio2017将其转换为命令行可执行文件,使用.NET 4.6.1使用C#将其转换为命令行可执行文件,但它不会编译,即使编译后也不会找到组成员。

当我将相同的代码粘贴到Visual 'GetEnumerator'项目中时,它会为foreach (object userG in (IEnumerable)computerGroupEntry.Invoke("Members"))提供错误信息,错误消息错误CS1579 foreach语句不能对'IEnumerable‘类型的变量进行操作,因为'IEnumerable’不包含公共实例定义的foreach (object userG in (IEnumerable)computerGroupEntry.Invoke("Members"))

  1. ,如果我将行改为foreach (object userG in computerGroupEntry.Properties["Members"]),它会编译,但在运行时却找不到任何属性“`Members

那么,为什么代码在ASP.NET上工作,但是C#可执行文件却看不到组的任何用户Members (都运行在同一台机器上)?

另外,如果有人知道为什么会在.NET中抛出一个错误,但是在ASP.NET中工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 06:58:35

您发布的代码在控制台应用程序(它是可执行的)中为我工作,在VS 2019中有目标.NET框架4.6.1。如有下列参考资料,请核实。

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;

(IEnumerable)computerGroupEntry.Invoke("Members")需要System.Collections

我提供了组“管理员”,并且能够检索"wsAdmin“、”域管理员“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62185192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档