- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:我正在查找每个 WellKnownSidType 枚举成员的帐户名和 SID,如下所示。
为什么有时会失败?
为什么有时无法将 WellKnownSidType 转换为 sid?
据我了解,只有从 sid 到帐户名的转换有时会失败,甚至只有当帐户不是本地且不在域中时才会失败。
例如,当将枚举 LogonIdsSid 转换为 SID 时,我得到:
Bekannte SID des Typs LogonIdsSid können nicht erstellt werden。
(无法创建 LogonIdsSid 类型的已知 SID。)
或者在查找 NTAuthoritySid 的帐户名时
我得到:Manche oder alle identitätsverweise konnten nicht übersetzt werden。
(部分或全部身份引用无法翻译。)
Sub Main()
Enumerations.SidInfo(Of System.Security.Principal.WellKnownSidType)()
End Sub
Public Class Enumerations
Public Shared Sub SidInfo(Of T)()
Dim enumType As Type = GetType(T)
For Each ThisEnumValue As T In System.Enum.GetValues(GetType(T))
Try
Console.WriteLine("Enum: System.Security.Principal.WellKnownSidType." + System.Enum.Format(GetType(T), ThisEnumValue, "G"))
Dim enumItem1 As System.Reflection.FieldInfo = enumType.GetField(System.Enum.Format(GetType(T), ThisEnumValue, "G"))
Dim enumValue1 As T = CType(enumItem1.GetValue(enumType), T)
Dim sid As System.Security.Principal.SecurityIdentifier = New System.Security.Principal.SecurityIdentifier(CType(CType(enumValue1, Object), System.Security.Principal.WellKnownSidType), Nothing)
Console.WriteLine("SID: " + sid.ToString())
Dim ntAccount As Security.Principal.NTAccount = CType(sid.Translate(GetType(Security.Principal.NTAccount)), Security.Principal.NTAccount)
Console.WriteLine("Account: " + ntAccount.ToString())
Console.WriteLine(vbCrLf)
Catch ex As Exception
Console.WriteLine("Exception on: " + System.Enum.Format(GetType(T), ThisEnumValue, "G"))
Console.WriteLine(vbCrLf)
End Try
Next
End Sub
End Class
C#(自动翻译):
//Dim sid As System.Security.Principal.SecurityIdentifier = New System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.WorldSid, Nothing)
//Dim rule As System.Security.AccessControl.MutexAccessRule = New System.Security.AccessControl.MutexAccessRule(sid, System.Security.AccessControl.MutexRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)
public static void GetSID<T>()
{
Type enumType = typeof(T);
foreach (T ThisEnumValue in System.Enum.GetValues(typeof(T))) {
try {
Console.WriteLine("Enum: System.Security.Principal.WellKnownSidType." + System.Enum.Format(typeof(T), ThisEnumValue, "G"));
System.Reflection.FieldInfo enumItem1 = enumType.GetField(System.Enum.Format(typeof(T), ThisEnumValue, "G"));
T enumValue1 = (T)enumItem1.GetValue(enumType);
System.Security.Principal.SecurityIdentifier sid = new System.Security.Principal.SecurityIdentifier((System.Security.Principal.WellKnownSidType)(object)enumValue1, null);
Console.WriteLine("SID: " + sid.ToString());
System.Security.Principal.NTAccount ntAccount = (Security.Principal.NTAccount)sid.Translate(typeof(Security.Principal.NTAccount));
Console.WriteLine("Account: " + ntAccount.ToString());
Console.WriteLine(Constants.vbCrLf);
} catch (Exception ex) {
Console.WriteLine("Exception on: " + System.Enum.Format(typeof(T), ThisEnumValue, "G") + Constants.vbCrLf + ex.Message);
Console.WriteLine(Constants.vbCrLf);
}
}
}
最佳答案
这个方法实际上会排除三个错误。
第一个是IdentityNotMappedException
这意味着您尝试创建的帐户实际上并不存在于计算机上。 WellKnownSidType 枚举表示所有众所周知的 SID,而不仅仅是特定于给定计算机的 SID。可能有一种机制可以用来查找此内容,但我不知道。您可能必须 P/Invoke 并使用 CreateWellKnownSid
或者只是捕获异常。
第二个是 ArgumentException
,如果您尝试使用 LogonIdsSid
,就会发生这种情况。如果您检查documentation for the constructor对于 SecurityIdentifier
,您会发现可以使用 LogonIdsSid
。
第三个错误是 ArgumentNullException
,如果您尝试创建以下众所周知的 SID 之一而不指定域 SID,则会发生该错误。这也是in the documentation .
关于c# - 为什么 WellKnownSidType 有时无法转换为 sid/account?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044473/
这必须从远程机器获得。以下查询不适用于 SID,但适用于组和帐户名称。 "SELECT GroupComponent FROM Win32_GroupUser WHERE PartComponent
我必须更改特定数据库 (SID) 的时区。我有数据库服务器的地方配置并安装了多个数据库(SID)。当我连接特定 SID 并在查询下面运行时: alter database set time_zone=
我正在使用 Twilio Rest API 通过向 /2010-04-01/Accounts/{AccountSid}/Calls/{ParticipantCallSid} 发送请求来获取有关使用参与
我正在使用 Windows 事件目录环境。 SID 是域 ID 和 RID 的组合。 我发现一个域最多可以有 2^32 个 RID。但是,域 ID 甚至可以超过 32 位。此外,域 ID 似乎仅在森林
我正在学习,但不知道如何让下面的代码在远程计算机上运行。 我想检索远程计算机上特定用户的 SID 下面的代码片段用于检索本地计算机上登录用户的 SID。我正在寻找一种方法来使用它来查找远程系统的特定
我正在阅读Learn Vim Script the Hard Way在练习将折叠函数转换为本地脚本函数时遇到了一些让我困惑的事情。 我尝试这样做: setlocal foldexpr=GetPotio
我正在尝试使用 C++ 在 Windows 上获取计算机的主域 SID。我已经使用 LsaQueryInformationPolicy 和 PolicyPrimaryDomainInformation
我正在使用下面的代码来检索进程所有者的 SID,这里一切正常,但我如何才能可能至少检索任何(最多每个)进程所有者所属的成员资格 SID? PSID g_pSID; BOOL GetCurrentPro
我无法让我的 SID 工作...... page 2';?> 没有显示 SID 号,但 session_id 正在工作,不确定我是否遗漏了什么。谢谢 最佳答案 如果一个名为 session.name
在 Windows 操作系统中,用户 SID 用字符串表示,例如: S-5-1-76-1812374880-3438888550-261701130-6117 有什么方法可以确定这样的字符串是有效的用
我遇到一个问题,即用户 X(非管理员用户)运行提升的程序,在获取和查询与当前进程关联的 token 时检索到错误的 SID 信息。 我在这里的主要限制是我必须使用 winXP 兼容代码,所以 WSTx
我正在运行安装了以下蓝牙相关软件包的 Debian Sid: blueman 2.0.4-1 bluetooth 5.43-1 bluez 5.43-1 bluez-firmware 1.2-3 fi
我想在两个 sql server 实例上创建多个数据库用户。为了能够轻松地将数据库从一个实例复制到另一个实例,我希望 SID 保持一致。 我的想法是使用可预测的 SID,以最大程度地减少维护痛苦。我梦
我的 Delphi 2010 应用程序需要将 Windows 用户添加到本地管理员组。我使用 NetLocalGroupAddMembers 使这部分工作。 现在应用程序需要在具有其他语言的 Wind
我已按照此处的教程进行操作 https://www.twilio.com/docs/quickstart/client/javascript这将进行出站调用。 我将如何收集出站段的 Call SID?
我正在使用 strope 和 jquery 构建一个基于 Web 的客户端,并使用 openfire 作为服务器。几乎一切都正常,我可以获取花名册列表,发送和接收消息,但是当我尝试将我的状态从可用更改
我正在编写一个程序来枚举进程,我想找出指定进程正在其下运行的 SID/用户 ID 和 session (即我有一个 PID/句柄处理,我想要它正在运行的 SID 和 session )。有什么线索吗?
我们正在使用 FileNet 5.1,而其他一些团队不小心从产品中删除了一个名为“ABC”的组。现在应用了“ABC”的文档现在有了 SID。我们现在已经创建了一个同名的组并确定了受影响的 GUID。我
我正在尝试实现 Twilio swift 快速启动应用程序,无论如何我想在 iOS 和 Android 平台上配置应用程序, 我到达了 iOS tutorial 中的第 8 步 我有一个新的 PUSH
问题:我想通过SID获取本地windows用户: 我找到了这段代码 [ADSI]("WinNT://$Env:Computername/") 在这里: http://www.eggheadcafe.c
我是一名优秀的程序员,十分优秀!