问题标签 [sid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 获取机器 SID(包括主域控制器)
我需要在 C# 中获取机器 SID(不是计算机帐户的 SID)。计算机指定为主机名,不一定是本地计算机,可以是域计算机或工作组计算机。我使用这个帮助类来调用 LookupAccountName API 函数:
并像这样使用它:
我唯一的问题是,如果计算机是主域控制器,这不起作用(在这种情况下我需要获取域 SID)。
c# - 从登录 ID 获取用户 SID(Windows XP 及以上)
当用户在本地或通过终端服务器登录时,我有一个 Windows 服务需要访问 HKEY_USERS 下的注册表配置单元。我在 win32_logonsession 上使用 WMI 查询来接收用户登录时的事件,我从该查询中获得的属性之一是 LogonId。为了弄清楚我需要访问哪个注册表配置单元,现在我需要用户的 SID,它用作 HKEY_USERS 下的注册表项名称。
在大多数情况下,我可以通过像这样(在 C# 中)执行 RelatedObjectQuery 来获得它:
其中“logonID”是会话查询中的登录会话 ID。运行 RelatedObjectQuery 通常会给我一个 SID 属性,其中包含我需要的内容。
我有两个问题。首先,也是最重要的,RelatedObjectQuery 不会为使用缓存凭据登录、与域断开连接的域用户返回任何结果。其次,我对这个 RelatedObjectQuery 的性能不满意 --- 它可能需要几秒钟的时间才能执行。
这是一个快速而肮脏的命令行程序,我拼凑在一起来试验查询。这不是设置接收事件,而是枚举本地机器上的用户:
那么......有没有办法根据我从 WMI 检索到的信息快速可靠地获取用户 SID,还是应该考虑使用类似 SENS 的东西?
c# - 在 C# 中搜索 Windows 用户 SID
语境
上下文优先 - 我试图解决的问题如下。
[编辑] 有问题的应用程序是针对 .NET 3.5 SP1 构建的。
我们的一位客户要求引用我们改进我们的一个应用程序需要多长时间。此应用程序当前以用户名/密码组合的形式提供基本用户身份验证。该客户希望其员工能够使用在运行应用程序时当前登录的任何 Windows 用户帐户的详细信息进行登录。
如果我告诉他们不,这不会破坏交易 - 但客户可能愿意支付开发成本来将此功能添加到应用程序中。值得研究。
根据我的搜寻,如果更改这些详细信息,似乎存储用户登录详细信息对域\用户名将是有问题的。但是 Windows 用户 SID 根本不应该改变。我的印象是最好按 SID 记录 Windows 用户 - 如果我错了,请随时原谅我。
我一直在摆弄一些 Windows API 调用。在 C# 中,获取当前用户的 SID 非常简单。我已经可以获取任何用户的 SID 并使用 LookupAccountSid 对其进行处理,以获取用户名和域以进行显示。对于感兴趣的人,我的代码在这篇文章的末尾。
然而,这只是冰山一角。以下两个问题完全超出了我的经验。我不仅不知道如何实现它们——我什至不知道如何找出如何实现它们,或者各种系统上的陷阱是什么。
任何帮助自己朝着正确的方向前进将不胜感激。
问题 1)
如果该用户没有被授予对应用程序的访问权限,那么在运行时获取本地用户是没有意义的。我们需要在应用程序的“管理员控制台”中添加一个新部分,用于添加 Windows 用户(或组)并为这些用户分配应用内权限。
类似于“添加 Windows 用户登录”按钮的东西会弹出一个窗口,允许用户搜索网络上的可用 Windows 用户帐户(不仅仅是本地计算机),以添加到可用应用程序登录列表中.
如果 .NET 或 Windows 中已经有一个组件可以让我为我做这件事,那会让我非常高兴。
问题 2)
我还想知道如何获取给定的 Windows 用户 SID 并根据给定的 Windows 用户组(可能取自数据库)检查它。我也不确定如何开始使用这个,尽管我希望它比上面的问题更容易。
对于有兴趣的人
c# - 将 SID 转换为用户名/组?
我正在遍历网络目录并尝试输出与每个文件/文件夹关联的用户/组名(权限)。我要恢复 SID,但我想要“group_test”之类的名称,而不是“S-1-5-32-544”。这是我的代码 -
我从上面的代码中得到了 SID,但是在 foreach 循环中,如果我使用它来代替 -
我得到这个例外 -
Some or all identity references could not be translated.
看来 Translate 方法不适用于远程共享。如何检索 SID 的真实姓名?远程服务器没有 LDAP。
谢谢你。
php - 通过 get 传递的 SID 的值
我试图通过 get (url) 而不是通过 cookie 传递会话 id 的值。我对 php.ini 的配置是:
session.use_cookies = on session.use_only_cookies = off session.use_trans_sid = on
通常(总是)cookie在用户的浏览器中启用,所以如果我尝试通过url传递sid:www.site.com/?phpsessid=abc它不起作用,因为恒定的SID(http://www .php.net/manual/en/session.idpassing.php) 保持为空,会话使用 $_COOKIE['PHPSESSID']。
如果 cookie 被手动禁用,则会话使用 SID。
我的问题是:我可以通过启用 cookie 的方式使用 SID 吗?也许有一些我不知道的 php.ini 配置....
谢谢 :)
c++ - 将 SID 转换为字符串
我不是 C++ 开发人员,所以我想我的程序不起作用只是我的错。我想查找 Windows 组的 SID 并返回一个可读的 SID。
我的问题是该函数只返回一些奇怪的字符而不是 SID,为什么?
.net - 如何获取与 Windows 用户匹配的所有安全标识符 (SID)?
使用 .NET,我想以编程方式获取 Windows 用户所属的所有组以及代表登录用户的所有其他 SID(安全标识符)的列表。结果列表应包含:
- 用户本人。
- 他是直接成员的团体
- 他是间接用户的嵌套组
- 匹配的WellKnownSidType。例如:
- 每个人
- NT AUTHORITY\Authenticated Users
- ...
第一项是微不足道的,我已经可以通过使用代表我的用户的属性来检索第 2 点和第 3 点,就像这个System.DirectoryServices
例子一样。tokenGroups
DirectoryEntry
有人可以找到一种(简单的)方法来做到这一点
c++ - 比较 2 个字符串格式的 SID
我可以比较 2 个字符串格式的 SID 是否相等?
根据我的理解,组 SID 是 Active Directory 林中的唯一标识符,因此我使用的字符串ConvertSidToStringSid
也将是唯一的,因此可以通过使用字符串比较函数与任何其他组 SID(字符串格式)进行比较?
asp.net - VB.NET - 如何使用 Active Directory 将 SID 转换为组名
使用 VB.NET,如何使用 Active Directory 将 sid 转换为组名?
示例:我需要获取“group_test”而不是“S-1-5-32-544”
我正在使用的代码是:
或类似的东西?
您将如何使其适应此代码?(如果用户在 xx 组中,则在下拉列表中显示 xx 组)
vb.net - VB.NET - 如何使用 Active Directory 角色和 SID 查看当前用户的组名是否与指定的组名匹配
我正在尝试匹配一个特定的组名,看看它是否存在于当前使用 Active Directory 角色登录的用户。如果当前用户的组名存在,我希望该组名显示在下拉列表中。示例:如果当前用户在 BIG Group 中,则在下拉列表中显示 BIG。
问题:我得到的只是 SID,我无法获得与组名匹配的任何内容,并且下拉列表中不会显示任何内容。
我还收到以下错误:
我该如何解决??
这是我正在使用的代码:
感谢您的关注!任何有用的答案都会被投票!