NetWkstaUserGetInfo (netapi32)
Last changed: -63.226.251.37

.
Summary
TODO - a short description

C# Signature:

[DllImport("netapi32.dll", SetLastError=true)]
static extern TODO NetWkstaUserGetInfo(
    [MarshalAs(UnmanagedType.LPWStr)]string reserved,
    int level, out IntPtr lpBuffer);

VB Signature:

Declare Function NetWkstaUserGetInfo Lib "netapi32.dll" (ByVal reserved As String, ByVal level As Integer, ByRef lpBuffer As IntPtr) As Integer

User-Defined Types:

[StructLayout(LayoutKind.Sequential)]

public struct WKSTA_USER_INFO_1101

{

    [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
    public string wkui1101_username;

    [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
    public string wkui1101_logon_domain;

    [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
    public string wkui1101_logon_server;

    [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
    public string wkui1101_oth_domains;

}

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    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

C# Sample

/// <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_1101 wksInfo;

    result = NetWkstaUserGetInfo(null, 1, out buffer);
    if (result == 0)
    {
        Int32 pointer = buffer.ToInt32();

        wksInfo = (WKSTA_USER_INFO_1101)Marshal.PtrToStructure(
            new IntPtr(pointer), typeof(WKSTA_USER_INFO_1101));

        domain = wksInfo.wkui1101_logon_domain;
        System.Windows.Forms.MessageBox.Show(domain);
        NetApiBufferFree(buffer);
    }

    return domain;

}

Please add some more!

Documentation