Rev 81 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 81 | Rev 82 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | 10 | ||
11 | function GetUserName: string; |
11 | function GetUserName: string; |
12 | function GetComputerName: string; |
12 | function GetComputerName: string; |
13 | function ExpandEnvironmentStrings(ATemplate: string): string; |
13 | function ExpandEnvironmentStrings(ATemplate: string): string; |
14 | function GetHomeDir: string; |
14 | function GetHomeDir: string; |
15 | function GetComputerSID: string; |
- | |
16 | procedure EnvironmentStringsToStrings(outSL: TStrings); |
15 | procedure EnvironmentStringsToStrings(outSL: TStrings); |
- | 16 | function GetPlatformID: integer; |
|
17 | 17 | ||
18 | implementation |
18 | implementation |
19 | 19 | ||
20 | function GetHomeDir: string; |
20 | function GetHomeDir: string; |
21 | var |
21 | var |
Line 40... | Line 40... | ||
40 | end; |
40 | end; |
41 | end; |
41 | end; |
42 | end; |
42 | end; |
43 | 43 | ||
44 | function GetComputerName: string; |
44 | function GetComputerName: string; |
45 | // http://www.delphi-treff.de/tipps-tricks/netzwerkinternet/netzwerkeigenschaften/computernamen-des-eigenen-rechners-ermitteln/ |
45 | // Source: http://www.delphi-treff.de/tipps-tricks/netzwerkinternet/netzwerkeigenschaften/computernamen-des-eigenen-rechners-ermitteln/ |
46 | var |
46 | var |
47 | Len: DWORD; |
47 | Len: DWORD; |
48 | begin |
48 | begin |
49 | Len := MAX_COMPUTERNAME_LENGTH+1; |
49 | Len := MAX_COMPUTERNAME_LENGTH+1; |
50 | SetLength(Result,Len); |
50 | SetLength(Result,Len); |
Line 63... | Line 63... | ||
63 | ZeroMemory(@buffer, size); |
63 | ZeroMemory(@buffer, size); |
64 | Windows.ExpandEnvironmentStrings(PChar(ATemplate), buffer, size); |
64 | Windows.ExpandEnvironmentStrings(PChar(ATemplate), buffer, size); |
65 | SetString(result, buffer, lstrlen(buffer)); |
65 | SetString(result, buffer, lstrlen(buffer)); |
66 | end; |
66 | end; |
67 | 67 | ||
68 | - | ||
69 | - | ||
70 | // --- http://stackoverflow.com/a/7643383 --- |
- | |
71 | - | ||
72 | function ConvertSidToStringSid(Sid: PSID; out StringSid: PChar): BOOL; stdcall; |
- | |
73 | external 'ADVAPI32.DLL' name {$IFDEF UNICODE} 'ConvertSidToStringSidW'{$ELSE} 'ConvertSidToStringSidA'{$ENDIF}; |
- | |
74 | - | ||
75 | function SIDToString(ASID: PSID): string; |
- | |
76 | var |
- | |
77 | StringSid : PChar; |
- | |
78 | begin |
- | |
79 | ConvertSidToStringSid(ASID, StringSid); |
- | |
80 | Result := string(StringSid); |
- | |
81 | end; |
- | |
82 | - | ||
83 | function GetComputerSID:string; |
- | |
84 | var |
- | |
85 | Sid: PSID; |
- | |
86 | cbSid: DWORD; |
- | |
87 | cbReferencedDomainName : DWORD; |
- | |
88 | ReferencedDomainName: string; |
- | |
89 | peUse: SID_NAME_USE; |
- | |
90 | Success: BOOL; |
- | |
91 | lpSystemName : string; |
- | |
92 | lpAccountName: string; |
- | |
93 | begin |
- | |
94 | Sid:=nil; |
- | |
95 | try |
- | |
96 | lpSystemName:=''; |
- | |
97 | lpAccountName:=GetComputerName; |
- | |
98 | - | ||
99 | cbSid := 0; |
- | |
100 | cbReferencedDomainName := 0; |
- | |
101 | // First call to LookupAccountName to get the buffer sizes. |
- | |
102 | Success := LookupAccountName(PChar(lpSystemName), PChar(lpAccountName), nil, cbSid, nil, cbReferencedDomainName, peUse); |
- | |
103 | if (not Success) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then |
- | |
104 | begin |
- | |
105 | SetLength(ReferencedDomainName, cbReferencedDomainName); |
- | |
106 | Sid := AllocMem(cbSid); |
- | |
107 | // Second call to LookupAccountName to get the SID. |
- | |
108 | Success := LookupAccountName(PChar(lpSystemName), PChar(lpAccountName), Sid, cbSid, PChar(ReferencedDomainName), cbReferencedDomainName, peUse); |
- | |
109 | if not Success then |
- | |
110 | begin |
- | |
111 | FreeMem(Sid); |
- | |
112 | Sid := nil; |
- | |
113 | RaiseLastOSError; |
- | |
114 | end |
- | |
115 | else |
- | |
116 | Result := SIDToString(Sid); |
- | |
117 | end |
- | |
118 | else |
- | |
119 | RaiseLastOSError; |
- | |
120 | finally |
- | |
121 | if Assigned(Sid) then |
- | |
122 | FreeMem(Sid); |
- | |
123 | end; |
- | |
124 | end; |
- | |
125 | - | ||
126 | procedure EnvironmentStringsToStrings(outSL: TStrings); |
68 | procedure EnvironmentStringsToStrings(outSL: TStrings); |
127 | var |
69 | var |
128 | DosEnv: PChar; |
70 | DosEnv: PChar; |
129 | begin |
71 | begin |
130 | DosEnv := GetEnvironmentStrings; |
72 | DosEnv := GetEnvironmentStrings; |
Line 148... | Line 90... | ||
148 | ZeroMemory(@buffer, size); |
90 | ZeroMemory(@buffer, size); |
149 | Windows.GetUserName(buffer, size); |
91 | Windows.GetUserName(buffer, size); |
150 | SetString(result, buffer, lstrlen(buffer)); |
92 | SetString(result, buffer, lstrlen(buffer)); |
151 | end; |
93 | end; |
152 | 94 | ||
- | 95 | function GetPlatformID: integer; |
|
- | 96 | var |
|
- | 97 | OSVersionInfo: TOSVersionInfo; |
|
- | 98 | begin |
|
- | 99 | OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo); |
|
- | 100 | GetVersionEx(OSVersionInfo); |
|
- | 101 | result := OSVersionInfo.dwPlatformID; |
|
- | 102 | end; |
|
- | 103 | ||
153 | end. |
104 | end. |