Fragensteller
Programm zum eintragen/hinzufügen von zwei Registry Werten hängt sich auf "nicht DCs" (Domain-Controller) auf

Frage
-
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.DirectoryServices.ActiveDirectory;
using System.Linq;
using System.Management;
using System.Text;
namespace NLA
{
public class Program
{
public static void Main(string[] args)
{
// The name of the key must include a valid root.
const string userRoot = "HKEY_LOCAL_MACHINE";
const string subkey = "\\SYSTEM\\CurrentControlSet\\Services\\NlaSvc\\";
const string keyName = userRoot + subkey;
const string valueName = "DependOnService";
string[] RegData = (string[])Registry.GetValue(keyName, valueName, new string[] { "" });
List<string> values = new List<string>();
values.AddRange(RegData);
values.Add("DNS");
values.Add("NTDS");
values = values.Distinct().ToList<string>();
if (IsThisMachineIsADomainController())
{
Console.WriteLine("Ich bin ein DC !");
Registry.SetValue(keyName, valueName, values.ToArray());
Console.WriteLine("Werte wurden hinzugefügt!");
Console.ReadKey();
}
else
{
Console.WriteLine("...");
Console.ReadKey();
}
}
// Bei dieser Funktion hängt sich das Programm bei nicht DCs (Domain Controller) auf
public static bool IsThisMachineIsADomainController()
{
Domain domain = Domain.GetCurrentDomain();
string thisMachine = String.Format("{0}.{1}", Environment.MachineName, domain.ToString());
thisMachine = thisMachine.ToLower();
//Aufzählung der Domain Controller
List<string> allDcs = new List<string>();
string name = "";
foreach (DomainController dc in domain.DomainControllers)
{
name = dc.Name;
allDcs.Add(name);
}
return allDcs.Contains(thisMachine);
}
}
}- Bearbeitet Jiyan.Fontaine Mittwoch, 24. Juli 2019 06:28
Alle Antworten
-
Hallo Jiyan.Fontaine,
Welche ist Deine Version von Windows Server? Du kannst 2 Optionen ausprobieren, um zu überprüfen, ob der aktuelle Computer ein Domänencontroller ist oder nicht. Die erste Möglichkeit besteht darin, die Domänenrolleninformationen des aktuellen Computers mithilfe der Win32_ComputerSystem-WMI-Klasse abzurufen. Ein anderer Weg ist zu prüfen, ob der Active Directory-Domänendienst installiert ist oder nicht, die durch die Verwendung der Win32_ServerFeature-WMI-Klasse erreicht wird. Diese Informationen werden im folgenden Thread bereitgestellt:
C# - Check current machine is Domain Controller or notGruß,
Ivan Dragov
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.