複製鏈接
請複製以下鏈接發送給好友

GetUserName

鎖定
GetUserName是一個函數。
隨着系統安全性的加強,每個系統裏越來越多不同的賬號登錄。假如你正在開發一個上網安全軟件,讓不同的用户有不同的上網權限,這樣就需要識別當前的用户是什麼賬號登錄了,然後再作出權限分配。還有出錯時,也需要對當前賬進行記錄下來,因為不同的賬號有不同的權限,有些磁盤是不允許操作的。面對這些需求,就需要使用函數GetUserName。
中文名
GetUserName
lpBuffer
PChar; {緩衝區}
varnSize
DWORD {緩衝區大小}
作    用
用户權限

GetUserName聲明

VB聲明
Declare Function GetUserName Lib "advapi32.dll " Alias "GetUserNameA " (ByVal lpBuffer As String, nSize As Long) As Long

GetUserName定義

GetUserName(
lpBuffer: PChar; {緩衝區}
var nSize: DWORD {緩衝區大小}
): BOOL;
WINADVAPI BOOL WINAPI GetUserNameA (
__out_ecount_part(*pcbBuffer, *pcbBuffer) LPSTR lpBuffer,
__inout LPDWORD pcbBuffer
);
#ifdef UNICODE
#define GetUserName GetUserNameW
#else
#define GetUserName GetUserNameA
#endif // !UNICODE

GetUserName説明

取得當前用户的名字

GetUserName返回值

Long,TRUE(非零)表示成功,否則返回零。會設置GetLastError

GetUserName參數表

參數 類型及説明
lpBuffer String,一個字串緩衝區,預先初始化成由nSize指定的長度。它將用於容納用户名,是獲取名稱緩衝區。
nSize Long,初始化成lpBuffer的長度。返回以後,它會包含載入lpBuffer的字符數量 ,是緩衝區的大小和返回賬號的大小。

GetUserName註解

1、lpBuffer和nSize需要賦初值。
2、庫名:advapi32.dll
3、分類:硬件與系統函數
4、Long,TRUE(非零)表示成功,否則返回零。會設置GetLastErrorlpBuffer(String),一個字串緩衝區,預先初始化成由nSize指定的長度。它將用於容納用户名
nSize Long,初始化成lpBuffer的長度。返回以後,它會包含載入lpBuffer的字符數量

GetUserName例子

Dim s$, cnt&, dl&
cnt& = 199
s$ = String$(200,0)
dl& = GetUserName(s$, cnt)
Debug.Print Left$(s$, cnt); cnt
例一:
var
arr: array[0..254] of Char;
d: DWORD;
begin
d := SizeOf(arr);
GetUserName(arr, d);
ShowMessage(arr);  {wy}
end;
例二:
var
p: PChar;
num: DWORD;
begin
num := 0;
GetUserName(nil, num);
ShowMessage(IntToStr(num));
GetMem(p, num);
GetUserName(p, num);
ShowMessage(p);  {wy}
FreeMem(p);
end;
例三:
var
p: PChar;
num: DWORD;
begin
num := 0;
GetUserName(nil, num);
p := StrAlloc(num);
if GetUserName(p,num) then
ShowMessage(p) {wy}
else ShowMessage(‘無‘);
StrDispose(p);
end;
例四:如何獲得當前Windows登錄的用户名?
Private Sub Form_Load()
Dim s As String,cnt As Long ,dl As Long,CurUser As String cnt = 199
s = String$(200, 0)
dl = GetUserName(s, cnt)
Debug.Print(dl <> 0,"當前用户=" & Left$(s,cnt),"當前用户=")
End Sub

GetUserName參考資料

1、《MSDN》
2、書庫亞洲(shuku asia)編程頻道
3、書庫亞洲知識中心