Thử GetUserNameEx
chức năng Windows API.
const
NameUnknown = 0;
NameFullyQualifiedDN = 1;
NameSamCompatible = 2;
NameDisplay = 3;
NameUniqueId = 6;
NameCanonical = 7;
NameUserPrincipal = 8;
NameCanonicalEx = 9;
NameServicePrincipal = 10;
NameDnsDomain = 12;
function GetUserNameExString(ANameFormat: DWORD): string;
var
Buf: array[0..256] of Char;
BufSize: DWORD;
GetUserNameEx: function (NameFormat: DWORD; lpNameBuffer: LPSTR;
var nSize: ULONG): BOOL; stdcall;
begin
Result := '';
BufSize := SizeOf(Buf) div SizeOf(Buf[0]);
GetUserNameEx := GetProcAddress(GetModuleHandle('secur32.dll'), 'GetUserNameExA');
if Assigned(GetUserNameEx) then
if GetUserNameEx(ANameFormat, Buf, BufSize) then
Result := Buf;
end;
sử dụng định dạng NameDnsDomain
ví dụ, sẽ cho kết quả www.mydomain.com\user_name
nếu bạn đã đăng nhập vào "www.mydomain.com" miền.
Vì bây giờ tôi đã thực hiện điều này cho các nhu cầu của riêng mình trong ứng dụng của mình, @ nhận xét của iPath đã thoát đúng. sử dụng tốt hơn GetComputerNameEx
và chỉ định một trong số COMPUTER_NAME_FORMAT
cho nhu cầu của riêng bạn.
Một Delphi thực hiện sẽ trông như thế này (phiên bản Unicode):
interface
...
type
COMPUTER_NAME_FORMAT = (
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
ComputerNameMax);
function GetComputerNameExString(ANameFormat: COMPUTER_NAME_FORMAT): WideString;
implementation
...
function GetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPWSTR;
var nSize: DWORD): BOOL; stdcall; external kernel32 name 'GetComputerNameExW';
function GetComputerNameExString(ANameFormat: COMPUTER_NAME_FORMAT): WideString;
var
nSize: DWORD;
begin
nSize := 1024;
SetLength(Result, nSize);
if GetComputerNameExW(ANameFormat, PWideChar(Result), nSize) then
SetLength(Result, nSize)
else
Result := '';
end;
là máy chủ miền đang chạy trên companyname.com nếu không nó sẽ bị trống ngay cả khi bạn sử dụng đúng chức năng. –
Đây có phải là miền Active Directory không? –
Câu hỏi của bạn không rõ ràng lắm. Tất cả các infos này đều liên quan đến ** machine **, chứ không phải ** user **. – OnTheFly