12-10-2016, Saat: 10:20
Bugün bilgisayarıma bir program kurmak istediğimde: bilgisayarım bir domain sunucuya bağlı çalıştığı için kurulumun yapılamayacağına dair uyarı çıktı. Evet, iş yerimizde domain server var ve bilgisayarlar buna bağlı çalışıyor. Ben de "bu nasıl tespit edebiliriz" diye merak ettim ve araştırdım:
netapi32.dll bize bu konuda yardımcı oluyormuş. Bunun içindeki NetGetJoinInformation fonksiyonu bilgisayarın bir domain'e yada workgroup'a bağlı olup olmadığını bize söylüyor. MSDN dokümanında da anlaşılacağı gibi fonksiyondan bize 2 değer dönüyor: lpNameBuffer ve BufferType. İlki eğer bilgisayar domain yada workgroup'a dahil ise "NetBIOS name"i, ikincisi ise "join status"u yani domain/wokgroup'a bağlı olup olmadığını gösteren parametre.
Kullanımı:
Aynı kontrol WMI ile de yapılabilir. Bu durumda Win32_ComputerSystem sınıfının DomainRole değeri kontrol edilmeli:
https://theroadtodelphi.com/2011/10/20/w...d-domains/
netapi32.dll bize bu konuda yardımcı oluyormuş. Bunun içindeki NetGetJoinInformation fonksiyonu bilgisayarın bir domain'e yada workgroup'a bağlı olup olmadığını bize söylüyor. MSDN dokümanında da anlaşılacağı gibi fonksiyondan bize 2 değer dönüyor: lpNameBuffer ve BufferType. İlki eğer bilgisayar domain yada workgroup'a dahil ise "NetBIOS name"i, ikincisi ise "join status"u yani domain/wokgroup'a bağlı olup olmadığını gösteren parametre.
Kullanımı:
function NetGetJoinInformation(lpServer: PWideChar; out lpNameBuffer: PWideChar;
out BufferType: Integer): Cardinal; stdcall; external 'netapi32.dll';
function NetApiBufferFree(Buffer: Pointer): DWORD; stdcall; external 'netapi32.dll';
var
NetBIOSName, durum: String;
P: PWideChar;
jStatus: Integer;
begin
NetGetJoinInformation(nil, P, jStatus);
NetBIOSName := P;
NetApiBufferFree(P);
case jStatus of
0: durum := 'Bilinmeyen';
1: durum := 'Üye değil';
2: durum := 'Workgroup üyesi';
3: durum := 'Domain Üyesi';
end;
ShowMessage(Format('%s - %s', [NetBIOSName, durum]));
Aynı kontrol WMI ile de yapılabilir. Bu durumda Win32_ComputerSystem sınıfının DomainRole değeri kontrol edilmeli:
https://theroadtodelphi.com/2011/10/20/w...d-domains/
There's no place like 127.0.0.1

