我正在尝试开发一个应用程序(C#)来查询LDAP服务器.我不知道命名为查询的实际服务器 - 有没有办法找到使用标准的Windows工具或.net中的东西?
我也听说有传言说只要我的查询字符串中有dc = domain,dc = com,就不一定需要服务器名称(ldap:// server /),但我到目前为止还能够以这种方式使用它.
有小费吗?
谢谢
我目前正在为我正在开展的新项目设计会员/简介计划,我希望得到其他人的一些意见.
该项目是一个ASP.NET Web应用程序,由于时间紧迫,我试图使用任何和所有内置的.NET框架组件.该网站可能会招待<5000个用户.每个用户都有一个配置文件,其中自定义设置和对象将在访问之间保持不变.
我需要使用现有的Active Directory进行身份验证.由于无法扩展AD模式以保存新字段,因此我需要将用户设置和对象保存在不同的数据存储中.我也被告知ADAM可能不是一个可能的解决方案.
我希望将Active Directory成员资格提供程序用于我的身份验证方案,将SQL配置文件提供程序用作用户配置文件数据存储.我宁愿不构建自定义配置文件提供程序,但如果需要,我不认为这会带来很多问题.
我想知道这是否是一个可能的解决方案,如果是这样,有没有人对这种方法有任何好运.
任何评论将不胜感激.
谢谢.
我想使用AccountManagement列出组织单位中的所有组.
以下代码段与DirectoryServices一起使用,但我必须在结果中使用DirectoryEntry路径实现GroupPrincipal(感觉就像一个脏修复).
DirectoryEntry root = new DirectoryEntry("LDAP://OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local")
DirectorySearcher ds = new DirectorySearcher(root);
ds.Filter = "(objectCategory=group)";
SearchResultCollection results = ds.FindAll();
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
谢谢!
此链接http://msdn.microsoft.com/en-us/library/aa772153(VS.85).aspx说:
您最多可以在一个LDAP连接上注册五个通知请求.您必须有一个专用线程,等待通知并快速处理它们.当您调用ldap_search_ext函数来注册通知请求时,该函数会返回标识该请求的消息标识符.然后使用ldap_result函数等待更改通知.发生更改时,服务器会向您发送一条LDAP消息,其中包含生成通知的通知请求的消息标识符.这会导致ldap_result函数返回标识已更改对象的搜索结果.
通过.NET文档我找不到类似的行为.如果有人知道如何在C#中做到这一点,我将非常感谢知道.我希望看到系统中所有用户的属性发生变化,以便我可以根据更改的内容执行自定义操作.
我查看了stackoverflow和其他来源没有运气.
谢谢.
我正在使用Mark Russinovich 的Active Directory Explorer.这是一个很棒的工具.
我正在使用它来导航活动目录,以确保我使用.NET的DirectorySearcher的程序返回正确的数据.
但是当我尝试使用DirectorySearcher在objectGUID中搜索我的程序时,会发生一些事情,如果我将实际的GUID作为字符串传递它不会返回任何内容,就像我使用Active Directory资源管理器一样,当我添加时
objectGuid值为f8d764ff-9a6a-418e-a641-b6f99661a8d5,其搜索子句变为:(objectGUID =\FFd\D7\F8j\9A\8EA\A6A\B6\F9\96a\A8\D5*)
我如何在我的程序中为directorySearcher执行此操作,我猜它是一个八位字符串的东西,但我无法弄明白.
我正在尝试获取目录服务对象的"uSNChanged"值的Int64值.不幸的是,它总是以某种COM对象的形式回归.我尝试使用转换为Int64,调用Int64.Parse(),并调用Convert.ToInt64().这些都不起作用.
对于给定的DirectoryEntry对象,此代码将显示以下属性:
private static void DisplaySelectedProperties(DirectoryEntry objADObject)
{
try
{
string[] properties = new string[] {
"displayName",
"whenCreated",
"whenChanged",
"uSNCreated",
"uSNChanged",
};
Console.WriteLine(String.Format("Displaying selected properties of {0}", objADObject.Path));
foreach (string strAttrName in properties)
{
foreach (var objAttrValue in objADObject.Properties[strAttrName])
{
string strAttrValue = objAttrValue.ToString();
Console.WriteLine(String.Format(" {0, -22} : {1}", strAttrName, strAttrValue));
}
}
Console.WriteLine();
}
catch (Exception ex)
{
throw new ApplicationException(string.Format("Fatal error accessing: {0} - {1}", objADObject.Path, ex.Message), ex);
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Displaying selected properties of LDAP://server/o=org/cn=obj displayName : …
我正在使用System.DirectoryServices.AccountManagement命名空间类来管理多个组的成员身份.这些群体控制着我们的印刷会计系统的人口,其中一些非常庞大.我遇到了从这些大型组中删除任何用户的问题.我有一个测试程序来说明问题.请注意,我正在测试的组不是嵌套的,但user.IsMemberOf()似乎也有同样的问题,而GetAuthorizationGroups()正确显示用户所属的组.有问题的小组有大约81,000名成员,因为Remove()不起作用,所以它应该超过它应该有的,并且通常大约是65K左右.
我有兴趣听到有其他人遇到过这个问题并已经解决了.我有一个与微软打开的案例,但由于呼叫中心的时间差大约为17小时,因此呼叫转向很慢,因此他们在我离开家之前大约一个小时才到达工作岗位.
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var group = GroupPrincipal.FindByIdentity( context, groupName ))
{
using (var user = UserPrincipal.FindByIdentity( context, userName ))
{
if (user != null)
{
var isMember = user.GetAuthorizationGroups()
.Any( g => g.DistinguishedName == group.DistinguishedName );
Console.WriteLine( "1: check for membership returns: {0}", isMember );
if (group.Members.Remove( user ))
{
Console.WriteLine( "user removed successfully" );
group.Save();
}
else
{
// do save in case Remove() is lying to me …Run Code Online (Sandbox Code Playgroud) 我正在尝试检索计算机名称列表以及它们上次从Active Directory登录的日期,并将它们返回到数据表中.获取名称很容易但是当我尝试添加"lastLogon"或"lastLogonTimestamp"时,如下所示,我获得的lastLogonTimestamp的唯一值是"System._ComObject"
public DataTable GetListOfComputers(string domainName)
{
DirectoryEntry entry = new DirectoryEntry("LDAP://DC=" + domainName + ",DC=com");
DirectorySearcher search = new DirectorySearcher(entry);
string query = "(objectclass=computer)";
search.Filter = query;
search.PropertiesToLoad.Add("name");
search.PropertiesToLoad.Add("lastLogonTimestamp");
SearchResultCollection mySearchResultColl = search.FindAll();
DataTable results = new DataTable();
results.Columns.Add("name");
results.Columns.Add("lastLogonTimestamp");
foreach (SearchResult sr in mySearchResultColl)
{
DataRow dr = results.NewRow();
DirectoryEntry de = sr.GetDirectoryEntry();
dr["name"] = de.Properties["Name"].Value;
dr["lastLogonTimestamp"] = de.Properties["lastLogonTimestamp"].Value;
results.Rows.Add(dr);
de.Close();
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用像LDP这样的工具查询AD,我可以看到该属性存在并填充了数据.我怎样才能获得这些信息?
我试图在emacs中运行Octave(我现在大多数都是初学者,但现在已经掌握了emacs的快捷方式).当我按照这里的建议尝试run-octave时,我收到了消息.
搜索文件,没有这样的文件或目录,八度
免责声明:我正在使用Windows Vista.Octave在c:\ Octave中...... emacs的默认目录是 c:\ users\username \
我将其添加到_emacs文件中:
(autoload'octave-mode"octave-mod"nil t)
(setq auto-mode-alist
(cons '("\\.m$" . octave-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)
(autoload'run-octave"octave-inf"nil t)
有关如何告诉emacs八度音程的提示吗?
感谢您提前帮助,Massagran