Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查windows用户是否存在,而不链接其他DLL并在c中引发异常#_C#_Windows 8_.net 4.5 - Fatal编程技术网

C# 检查windows用户是否存在,而不链接其他DLL并在c中引发异常#

C# 检查windows用户是否存在,而不链接其他DLL并在c中引发异常#,c#,windows-8,.net-4.5,C#,Windows 8,.net 4.5,我想检查本地计算机上是否存在C#程序中的用户。我发现的唯一两种方法是: 像这样使用System.DirectoryServices.AccountManagement 在用户不存在的情况下引发异常,如下所示 我不想同时使用它们: 不是第一个原因,因为我不想为单个检查添加引用,也不是第二个原因,因为这不是例外情况,在某些情况下,用户不存在,这是正常的 因此,我有两个问题: 1) 为什么我们要在第二种情况下使用active directory,为什么我们不在用户目录中查找用户目录呢? 2) 有没有其

我想检查本地计算机上是否存在C#程序中的用户。我发现的唯一两种方法是:

  • 像这样使用System.DirectoryServices.AccountManagement
  • 在用户不存在的情况下引发异常,如下所示
  • 我不想同时使用它们: 不是第一个原因,因为我不想为单个检查添加引用,也不是第二个原因,因为这不是例外情况,在某些情况下,用户不存在,这是正常的

    因此,我有两个问题: 1) 为什么我们要在第二种情况下使用active directory,为什么我们不在用户目录中查找用户目录呢?
    2) 有没有其他方法可以做到这一点


    Upd:谢谢,BendEg,Dan J,现在我只有一个问题

    你应该再次检查active directory,以确定用户是否真的存在。当您仅检查本地计算机时,将只返回已登录到该计算机的用户

    如果不想使用其他程序集(建议使用),可以使用
    DllImport
    使用Win32检查用户是否存在。但是这条路不太好


    如果您想了解这一点,请查看:

    这取决于您为什么对检查用户的存在感兴趣。
    Users
    中存在文件夹并不意味着用户存在;从技术上讲,这只是意味着
    Users
    中有一个同名文件夹。该文件夹可能属于已被删除的帐户。为了最好地回答这个问题,我们需要知道为什么要检查用户是否存在。“System”是一个完全有效的用户名。您是否在c:\users目录中看到它?丹J,我的程序启动了一个过程。在某些计算机上有一个具有特殊权限的用户,进程应该代表该用户启动,在某些计算机上没有这样的用户,因此进程应该代表当前用户启动