Вы можете переключиться с массива на std::vector
и использовать
std::vector<T*> v(SIZE);
Значения будут инициализированы с помощью NULL
с. Это предпочтительный способ C ++.
Обновление: начиная с C ++ 11, есть еще один способ: использование
std::array<T*, SIZE> array = {};
Это ведет себя больше как исправленная версия массива в стиле C (в частности, избегает динамического распределения) , переносит его размер вокруг и не затухает до указателя. Размер, однако, должен быть известен во время компиляции.
.NET 3.5 поддерживает новые классы запросов AD в пространстве имен System.DirectoryServices.AccountManagement
.
Для его использования , вам необходимо добавить «System.DirectoryServices.AccountManagement» в качестве ссылки И добавить оператор using
.
using System.DirectoryServices.AccountManagement;
using (PrincipalContext pc = new PrincipalContext(ContextType.Machine))
{
UserPrincipal up = UserPrincipal.FindByIdentity(
pc,
IdentityType.SamAccountName,
"UserName");
bool UserExists = (up != null);
}
<.NET 3.5
Для версий .NET до 3.5, вот чистый пример, который я нашел в dotnet-snippets
DirectoryEntry dirEntryLocalMachine =
new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
bool UserExists =
dirEntryLocalMachine.Children.Find(userIdentity, "user") != null;
Вы хотите использовать DirectorySearcher.
Примерно так:
static bool userexists( string strUserName ) {
string adsPath = string.Format( @"WinNT://{0}", System.Environment.MachineName );
using( DirectoryEntry de = new DirectoryEntry( adsPath ) ) {
try {
return de.Children.Find( strUserName ) != null;
} catch( Exception e ) {
return false;
}
}
}
Это должно быть быстрее. Кроме того, вы можете уменьшить свойства, если все, что вы делаете, это проверка на существование.
Следующее сообщение в командной строке возвращает 1, если «имя пользователя» существует:
net user | найти "имя пользователя" / c