使用安全身份(SID)帐户

时间:2019-03-05 19:11:58

标签: c# .net vb.net

我正在开发许可证管理系统。根据在SO上找到的一些建议,我将通过检索用户的Windows安全身份(SID)来获得唯一的用户标识符。

我对两个主题有疑问。

A。本地帐户与公司域帐户

在深入探讨该主题之前,我已经阅读了几种SID。

我知道与NT帐户相关的是一个“本地” SID:

Dim LocalAccountSID As New System.Security.Principal.NTAccount(Environment.UserDomainName, Environment.MachineName)

我了解公司帐户通过ActiveDirectory使用了一个“网络” SID。

Dim ActiveDirectorySID as New System.DirectoryServices.DirectoryEntry(String.Format("WinNT://{0},Computer", Environment.MachineName))
  1. 我首先要确保我没有混淆:

    • LocalAccountSID给定计算机上的Windows安装链接。也就是说,如果我在同一台计算机上有2个用户,则他们都将具有相同的LocalAccountSID。如果我在两台计算机上有一个用户,则他们将具有不同的LocalAccountSID。
    • ActiveDirectorySID与给定用户的 Active Directory帐户相关联。也就是说,如果我在同一台计算机上有2个用户,则他们将具有不同的ActiveDirectorySID。如果我在两台计算机上有1个用户,则他们将具有相同的ActiveDirectorySID。
  2. 我还想知道每台计算机是否都有LocalAccountSID? 我想只有公司帐户才有ActiveDirectorySID。我怎么知道当前的计算机是否有一台? (有什么比“尝试...捕获”更聪明的方法吗?)

B。检索SID

我无法将NTAccount转换为SecurityIdentifier

Dim LocalAccount As New System.Security.Principal.NTAccount(Environment.UserDomainName, Environment.MachineName)
Dim LocalAccountSID As Security.Principal.SecurityIdentifier
LocalAccountSID = LocalAccountSID.Translate(GetType(Security.Principal.SecurityIdentifier))
Console.WriteLine(LocalAccountSID .Value)
Console.ReadKey()

上面的代码给我以下错误:

  

部分或全部身份证明文件无法翻译

我在这里做错了什么? 用C#解决方案是可以接受的。

0 个答案:

没有答案
相关问题