为什么我需要其中两个?当我必须使用一个或另一个?
我有一个C#应用程序,它扫描目录并收集一些信息.我想显示每个文件的帐户名称.我可以通过获取FileInfo对象的SID在本地系统上执行此操作,然后执行以下操作:
string GetNameFromSID( SecurityIdentifier sid )
{
NTAccount ntAccount = (NTAccount)sid.Translate( typeof( NTAccount ) );
return ntAccount.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于网络上的文件,可能是因为Translate()函数仅适用于本地用户帐户.我想也许我可以在SID上进行LDAP查找,所以我尝试了以下方法:
string GetNameFromSID( SecurityIdentifier sid )
{
string str = "LDAP://<SID=" + sid.Value + ">";
DirectoryEntry dirEntry = new DirectoryEntry( str );
return dirEntry.Name;
}
Run Code Online (Sandbox Code Playgroud)
这似乎可以工作,因为对"dirEntry.Name"的访问会挂起几秒钟,好像它正在关闭并查询网络,但它会抛出一个System.Runtime.InteropServices.COMException
有谁知道如何获得任意文件或SID的帐户名称?我对网络或LDAP或其他任何东西都不太了解.有一个名为DirectorySearcher的类,我可能会使用它,但它想要一个域名,我不知道如何得到它 - 我所拥有的只是我正在扫描的目录的路径.
提前致谢.
关于从SID转换为帐户名称的问题 ; 反过来没有一个.
如何将用户名转换为SID字符串,例如,找出哪个HKEY_USERS子键与给定名称的用户相关?
我正在寻找一种简单的方法来获取当前Windows用户帐户的SID.我知道我可以通过WMI做到这一点,但我不想走那条路.
向在C#中回答的所有人道歉,因为没有指定它的C++.:-)
我正在将Active Directory身份验证构建到我的应用程序中,并且我计划将应用程序的内部帐户链接到用户的域SID.我更容易使用sid的字符串格式而不是字节数组,所以我打算将它作为字符串存储在数据库中.我应该多长时间来确保SID不会被截断?
我需要更改Oracle XE数据库的SID(而不是服务名称)以匹配生产数据库.
当我尝试在线搜索时,大多数页面都是通过tnsnames.ora描述更改或添加服务名称; 那不是我需要做的.
我从注册表中读取了一个SID列表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
一个人怎么就解决了显示的用户名(例如DOMAIN\user,BUILT-IN\user)给予在C#中的SID字符串?
如何在C#.net中检索Windows登录SID?(不是用户SID,而是每个会话的唯一新SID)
我正在寻找在.NET中实现服务/客户端通信的命名管道,并且遇到了这样的代码,虽然初始化管道的服务器端必须为管道设置安全描述符.他们这样做了:
PipeSecurity pipeSecurity = new PipeSecurity();
// Allow Everyone read and write access to the pipe.
pipeSecurity.SetAccessRule(new PipeAccessRule("Authenticated Users",
PipeAccessRights.ReadWrite, AccessControlType.Allow));
// Allow the Administrators group full access to the pipe.
pipeSecurity.SetAccessRule(new PipeAccessRule("Administrators",
PipeAccessRights.FullControl, AccessControlType.Allow));
Run Code Online (Sandbox Code Playgroud)
但我看着它,我很担心,指定的SID为字符串,或Authenticated Users和Administrators零件.用中文或其他语言来称呼它们的保证是什么?
我试过了man(3) setsid,但它只解释了如何使用它,我不明白什么时候setsid有用吗?