[DllImport("netapi32.dll", SetLastError=true)]
static extern int NetWkstaUserGetInfo(
[MarshalAs(UnmanagedType.LPWStr)]string reserved,
int level, out IntPtr lpBuffer);
Declare Function NetWkstaUserGetInfo Lib "netapi32.dll" (ByVal reserved As String, ByVal level As Integer, ByRef lpBuffer As IntPtr) As Integer
[StructLayout(LayoutKind.Sequential)]
public struct WKSTA_USER_INFO_1
{
[MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
public string wkui1_username;
[MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
public string wkui1_logon_domain;
[MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
public string wkui1_oth_domains;
[MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
public string wkui1_logon_server;
}
Do you know one? Please contribute it!
None.
Please add some!
Private Sub GetLoggedInUserInfo()
Dim lpBuffer As IntPtr
Dim result As Integer = NetWkstaUserGetInfo(Nothing, 1, lpBuffer)
If result = 0 Then
Dim wksInfo As WKSTA_USER_INFO_1 = Marshal.PtrToStructure(lpBuffer, GetType(WKSTA_USER_INFO_1))
''' Do something
NetApiBufferFree(lpBuffer)
End If
End Sub
/// <summary>
/// Retrieves the default domain for the currently logged in user.
/// </summary>
/// <returns>The name of the domain currently logged into.</returns>
public static string GetDefaultDomain()
{
IntPtr buffer = new IntPtr();
string domain = "";
int result;
WKSTA_USER_INFO_1 wksInfo;
result = NetWkstaUserGetInfo(null, 1, out buffer);
if (result == 0)
{
wksInfo = (WKSTA_USER_INFO_1)Marshal.PtrToStructure(
buffer, typeof(WKSTA_USER_INFO_1));
domain = wksInfo.wkui1101_logon_domain;
System.Windows.Forms.MessageBox.Show(domain);
NetApiBufferFree(buffer);
}
return domain;
}
Please add some more!