NetRemoteComputerSupports (netapi32)
Last changed: -84.56.168.242

.
Summary
Queries the redirector to retrieve the optional features the remote system supports. Features include Unicode, Remote Procedure Call (RPC), and Remote Administration Protocol support.

C# Signature:

    [DllImport("Netapi32.dll", EntryPoint = "NetRemoteComputerSupports", CharSet = CharSet.Unicode)]
    private static extern  Int32 NetRemoteComputerSupports(String uncServerName, NetSupportOption optionsWanted,ref NetSupportOption optionsSupported);

VB Signature:

Declare Unicode Function NetRemoteComputerSupports Lib "Netapi32.dll" ( _
     ByVal UncServerName As String, _
     ByVal OptionsWanted As NetSupportOption, _
     ByRef OptionsSupported As NetSupportOption) _
     As NET_API_STATUS

User-Defined Types:

NET_API_STATUS - Possible value are NERR_Success, ERROR_NOT_ENOUGH_MEMORY and ERROR_INVALID_PARAMETER.

<System.Flags()> _
Public Enum NetSupportOption As Integer
     Any = -1
     RemoteAdminProtocol = 2
     Rpc = 4
     SamProtocol = 8
     Unicode = 16
     Local = 32
     Error = -2147483648 'Not a possible value for OptionsSupported - can be used to indicate an error from the API
End Enum

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample VB Code:

Function RemoteComputerSupports(ByVal ComputerName As String, ByVal Wanted As NetSupportOption) _
   As NetSupportOption
     Dim supports As NetSupportOption
     If NetRemoteComputerSupports(ComputerName, Wanted, supports) = NET_API_STATUS.NERR_Success Then
     Return supports
     Else
     Return NetSupportOption.Error
     End If
End Function

Sample C# Code:

    [System.Flags()]
    public enum NetSupportOption
    {
    Any = -1,
    RemoteAdminProtocol = 2,
    Rpc = 4,
    SamProtocol = 8,
    Unicode = 16,
    Local = 32,
    Error = -2147483648 //Not a possible value for OptionsSupported - can be used to indicate an error from the API
    }

    static void Main(string[] args)
    {
        NetSupportOption Want = NetSupportOption.Any;
        NetSupportOption Has = NetSupportOption.Error;
        Debug.WriteLine(NetRemoteComputerSupports("{SERVERNAME}", Want,ref Has));

    }

    [DllImport("Netapi32.dll", EntryPoint = "NetRemoteComputerSupports", CharSet = CharSet.Unicode)]
    private static extern  Int32 NetRemoteComputerSupports(String uncServerName, NetSupportOption optionsWanted,ref NetSupportOption optionsSupported);

Documentation