GetUserName

GetUserName是一個函式。

概述

隨著系統安全性的加強,每個系統里越來越多不同的帳號登錄。假如你正在開發一個上網安全軟體,讓不同的用戶有不同的上網許可權,這樣就需要識別當前的用戶是什麼帳號登錄了,然後再作出許可權分配。還有出錯時,也需要對當前帳號進行記錄下來,因為不同的帳號有不同的許可權,有些磁碟是不允許操作的。面對這些需求,就需要使用函式GetUserName。

聲明

VB聲明

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

定義

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

說明

取得當前用戶的名字

返回值

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

參數表

參數 類型及說明

lpBuffer String,一個字串緩衝區,預先初始化成由nSize指定的長度。它將用於容納用戶名,是獲取名稱緩衝區。

nSize Long,初始化成lpBuffer的長度。返回以後,它會包含載入lpBuffer的字元數量 ,是緩衝區的大小和返回帳號的大小。

註解

1、lpBuffer和nSize需要賦初值。

2、庫名:advapi32.dll

3、分類:硬體與系統函式

4、Long,TRUE(非零)表示成功,否則返回零。會設定GetLastErrorlpBuffer(String),一個字串緩衝區,預先初始化成由nSize指定的長度。它將用於容納用戶名

nSize Long,初始化成lpBuffer的長度。返回以後,它會包含載入lpBuffer的字元數量

例子

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

相關詞條

相關搜尋

熱門詞條

聯絡我們