Discussion:
Vollqualifizierten Rechnernamen ermitteln
(zu alt für eine Antwort)
Peter Schütt
2015-06-19 10:16:59 UTC
Permalink
Hallo,
wie ermittle ich den vollqualifizierten Rechnernamen (FQDN) des Rechners, wo das Delphi-Programm gerade drauf läuft?

Mittels
GetEnvironmentVariable('ComputerName') ;
bekomme ich den einfachen Namen (ohne Domain)?

Und die Lösung sollte für Clients und Services funktionieren.

Danke für alle Hinweise und Tips.

Ciao
Peter Schütt
Achim Kalwa
2015-06-21 12:07:40 UTC
Permalink
Moin,
Post by Peter Schütt
wie ermittle ich den vollqualifizierten Rechnernamen (FQDN) des Rechners, wo das Delphi-Programm gerade drauf läuft?
Mittels
GetEnvironmentVariable('ComputerName') ;
bekomme ich den einfachen Namen (ohne Domain)?
Und die Lösung sollte für Clients und Services funktionieren.
Der Aufruf der Funktion GetComputerNameEx() mit einem der Parameter aus
WinApi.Windows.TComputerNameFormat sollte ein Ergebnis bringen. Ob das
auch innerhalb von Services funktioniert, habe ich nicht ausprobiert.

function GetComputerNameExString(aNameFormat: TComputerNameFormat): string;
var
nSize : DWORD;
begin
SetLength(Result, 1024); // MAX_COMPUTERNAME_LENGTH is *NOT* long enough!
if WinApi.Windows.GetComputerNameEx(aNameFormat, PChar(Result), nSize)
then
SetLength(Result, nSize)
else
Result := '';
end;
Post by Peter Schütt
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724301%28v=vs.85%29.aspx
HTH
Achim
Peter Schütt
2015-07-20 13:57:18 UTC
Permalink
Hallo,
Post by Achim Kalwa
Post by Peter Schütt
wie ermittle ich den vollqualifizierten Rechnernamen (FQDN) des Rechners, wo das Delphi-Programm gerade drauf läuft?
[..]
Post by Achim Kalwa
Der Aufruf der Funktion GetComputerNameEx() mit einem der Parameter aus
WinApi.Windows.TComputerNameFormat sollte ein Ergebnis bringen. Ob das
auch innerhalb von Services funktioniert, habe ich nicht ausprobiert.
function GetComputerNameExString(aNameFormat: TComputerNameFormat): string;
var
nSize : DWORD;
begin
// >>>>
// Diese Lösung ist ein bisschen böse, da nSize auch ein IN Parameter ist.
// Und wenn nSize nicht gesetzt ist, ist das Verhalten nicht deterministisch.
nSize := 1024 ;
// <<<<
Post by Achim Kalwa
SetLength(Result, 1024); // MAX_COMPUTERNAME_LENGTH is *NOT* long enough!
if WinApi.Windows.GetComputerNameEx(aNameFormat, PChar(Result), nSize)
then
SetLength(Result, nSize)
else
Result := '';
end;
Post by Peter Schütt
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724301%28v=vs.85%29.aspx
Auf Diensten funktioniert es auch.

Ciao
Peter Schütt

Loading...