【问题标题】:Removing from listbox an unknown value从列表框中删除未知值
【发布时间】:2017-07-24 05:24:24
【问题描述】:

我已将 C:\Users\ 中的所有目录都列出到一个列表框中。

listBox1.Items.AddRange(Directory.GetDirectories("C:\\Users\\", "*" , SearchOption.TopDirectoryOnly));

Windows 中的所有用户都有文件夹 \\AppData\\ 但我不想弄乱这些文件夹,因为它们有 Windows 的重要文件,假设使用我的软件的计算机用户有 2 个或更多 Windows 帐户,所有这些有 \\AppData\\ 文件夹,第一个用户是我以前做的:

listbox1.items.remove("C:\\Users\\" + Environment.UserName + "\\AppData\\")

但我不知道其他用户名,有什么方法可以在不知道用户名的情况下删除列表框中的所有 AppData 文件夹?

【问题讨论】:

  • 为什么不将这些数据保存在寄存器中?
  • 您是否考虑过从目录(路径)中获取子文件夹列表?也许这会有所帮助? :)
  • 我同意 sometowngeek,这将解决您的问题
  • "我不想弄乱这些文件夹,因为它们有适用于 windows 的重要文件" 您的用户是否知道您似乎没有“弄乱”他们的 Users 中的其他数据的问题文件夹?
  • 我认为System.Manegment 可以帮助你。 stackoverflow.com/questions/12749537/…

标签: c#


【解决方案1】:

您可以使用此代码获取用户名

class Program
{
    static void Main(string[] args)
    {

        SelectQuery query = new SelectQuery("Win32_UserAccount");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
        foreach (ManagementObject envVar in searcher.Get())
        {
            Console.WriteLine("Username : {0}", envVar["Name"]);
        }

        Console.ReadLine();

    }
    // end of class
}

您可能需要为 System.Management 添加参考

【讨论】:

  • 来自 msdn msdn.microsoft.com/en-us/library/aa394507(v=vs.85).aspx Note Because both the Name and Domain are key properties, enumerating Win32_UserAccount on a large network can negatively affect performance. Calling GetObject or querying for a specific instance has less impact. 使答案不为假。只是想确保性能可能很差。
  • 谢谢你,它的工作,我不需要时间或性能,也谢谢你本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 2020-12-07
  • 2010-11-29
  • 2021-11-09
相关资源
最近更新 更多