草庐IT

c# - 从登录 ID 获取用户 SID(Windows XP 及更高版本)

我有一个Windows服务需要在用户登录时访问HKEY_USERS下的注册表配置单元,无论是在本地还是通过终端服务器。我在win32_logonsession上使用WMI查询来接收用户登录时的事件,我从该查询中获得的属性之一是LogonId。为了弄清楚我需要访问哪个注册表配置单元,现在,我需要用户的SID,它用作HKEY_USERS下的注册表项名称。在大多数情况下,我可以通过像这样(在C#中)执行RelatedObjectQuery来获得它:RelatedObjectQueryrelatedQuery=newRelatedObjectQuery("associatorsof{Win32

c# - 您要在 C# 中获取 Windows 安装 SID 吗?

我知道这个问题在SO上被问过很多次,但没有人回答我的问题。我从ComptiatA+的研究中了解到,在使用自动(无人值守)安装时,技术人员总是必须返回并更改MACHINESID,然后才能在每台机器上激活操作系统。似乎有很多关于如何通过网络获取SID等问题,但我知道还有一个无法更改的机器SID。对于那些使用过Fix-ItUtilities启动盘的人来说,有一个按钮,“更改SID”,如果它已经激活,这将使Windows无法启动。我的问题类似于this一个,但他的问题从未真正得到回答。我的问题是,如何使用C#获取MACHINEWindows安装SID。 最佳答案

c# - 获取机器 SID(包括主域 Controller )

我需要在C#中获取机器SID(不是计算机帐户的SID)。指定计算机为主机名,不一定是本地计算机,可以是域计算机或工作组计算机。我使用这个辅助类来调用LookupAccountNameAPI函数:privatestaticclassHelper{internalenumSID_NAME_USE{SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer}[DllI

c++ - 从 SID 创建用户 token ,在用户上下文中扩展环境变量

我有一个正在运行的服务,并且想访问像启动这样的普通用户文件夹。为此我想为系统上的每个用户(包括注销)扩展环境变量,如%APPDATA%。我可以获得已登录用户的sessionID并从中创建一个token,然后调用ExpandEnvironmentStringsForUser()。但是注销的用户呢?他们不会有session。我唯一能为他们得到的是帐户名(使用NetUserEnum()或NetQueryDisplayInformation())和来自注册表的SID(HKLM\software\Microst\WindowsNT\currentVersion\ProfileList)我能否从S

c# - 如何确定一个字符串是否是用户 SID?

在Windows操作系统中,用户SID用字符串表示,例如:S-5-1-76-1812374880-3438888550-261701130-6117有什么方法可以确定这样的字符串是有效的用户SID?谢谢。 最佳答案 根据SecurityIdentifiers说明,SID有如下形式(它有1到14个子权限值):S-1----…--您可以使用正则表达式来检查字符串是否匹配此模式:stringinput="S-5-1-76-1812374880-3438888550-261701130-6117";stringsidPattern=@"^S

c# - 通过 SID 解析显示用户名的最佳方法?

我从注册表中读取了SID列表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList。在给定C#中的SID字符串的情况下,如何解析显示用户名(例如DOMAIN\user、BUILT-IN\user)? 最佳答案 刚在pinvoke.net上找到它.替代托管API:在.Net2.0中可用:usingSystem.Security.Principal;//converttheusersidtoadomain\namestringaccount=

windows - 如何使用 WMI 检索 Windows 计算机的 SID?

我不是在寻找用户SID。我正在寻找计算机SID,ActiveDirectory将使用它来唯一标识计算机。我也不想查询事件目录服务器,我想查询计算机本身。 最佳答案 (哦,这很有趣!正如他们所说,我进行了一次疯狂的追逐,试图获得Win32_SID实例,它是一个单例,并且不能通过通常的InstancesOf或Query方法枚举...yaddayadda雅达。)好吧,这取决于您想要哪个计算机SID(说真的!)。有本地计算机自己使用的SID...为此,您只需获取本地管理员用户的SID,并从末尾删除“-500”即可获取计算机的SID。在VBS

c# - 如何在 .net 中将 SID 转换为字符串

我想将SID的System.Byte[]类型转换为字符串。我的代码:stringpath="LDAP://DC=abc,DC=contoso,DC=com";DirectoryEntryentry=newDirectoryEntry(path);DirectorySearchermySearcher=newDirectorySearcher(entry);mySearcher.Filter="(&(objectClass=user)(samaccountname=user1))";results=mySearcher.FindAll();foreach(SearchResultsear

database - Oracle SID 和服务名称;连接问题

我正在尝试通过sqldeveloper连接到远程服务器上的oracle数据库。我将连接详细信息复制到tnsnames,并且能够连接到数据库。但是我有另一个与sqldeveloper相同的数据库应用程序,当我尝试建立连接时,我不断收到此错误。此应用程序使用需要主机名和SID的oraclejdbc瘦客户端。我收到以下错误:java.sql.SQLException:监听器拒绝连接并出现以下错误:ORA-12505,TNS:监听器当前不知道连接描述符中给定的SID在进行故障排除时,我更改了sqldeveloper中的tns选项,并选择了基本选项以找出问题所在,我意识到由于正确的服务名称而无法

c# - 如何获取当前 Windows 帐户的 SID?

我正在寻找一种简单的方法来获取当前Windows用户帐户的SID。我知道我可以通过WMI做到这一点,但我不想走那条路。向所有用C#回答的人道歉,因为没有指定它是C++。:-) 最佳答案 在Win32中,调用GetTokenInformation,传递一个token句柄和TokenUser常量。它将填写TOKEN_USER结构为你。其中的元素之一是用户的SID。它是一个BLOB(二进制),但您可以使用ConvertSidToStringSid将其转换为字符串.要获取当前token句柄,请使用OpenThreadToken或OpenPr