Saya mengalami masalah ketika saya tidak dapat mengambil atribut AD melalui DirectoryEntry
. Saya bisa mendapatkannya melalui DirectorySearcher
, tapi saya tidak bisa mendapatkan atau mengaturnya melalui DirectoryEntry
.
Atribut yang dibutuhkan adalah ms-Mcs-AdmPwdExpirationTime
yang berisi NT TimeStamp, saya telah membaca dan menulis atribut ini.
DirectoryEntry
Kesalahan C# di konsol
Kesalahan HRESULT E_FAIL telah dikembalikan dari panggilan ke komponen COM
Saya sudah mencoba menggunakan yang berikut ini namun masih tidak dapat mengambil atributnya.
RefreshCache (string[] propertyNames);
Sunting:
ComputerPrincipal comp = ComputerPrincipal.FindByIdentity(ctx, MachineName);
DirectoryEntry de = (DirectoryEntry)comp.GetUnderlyingObject();
if (de.Properties.Contains("ms-Mcs-AdmPwd") == true)
{
string Password = (String)de.Properties["ms-Mcs-AdmPwd"][0];
Password_Input.Text = Password;
DateTime NTTime = DateTime.FromFileTime(ConvertLargeIntegerToLong(de.Properties["ms-Mcs-AdmPwdExpirationTime"].Value));
PasswordExpiry_Value.Text = NTTime.ToString("dd/MM/yyyy hh:mm:ss");
Console.WriteLine();
}
else
{
Password_Input.Text = "Password not set by LAPS";
}
// down the bottom of the .cs
private static long ConvertLargeIntegerToLong(object largeInteger)
{
var type = largeInteger.GetType();
var highPart = Convert.ToInt32(type.InvokeMember("HighPart", BindingFlags.GetProperty, null, largeInteger, null));
var lowPart = Convert.ToInt32(type.InvokeMember("LowPart", BindingFlags.GetProperty, null, largeInteger, null));
return (long)highPart << 32 | (uint)lowPart;
}