参考下面的例子.copy from http://groups.google.com/groups?q=RasDial+C%23&hl=en&lr=&ie=UTF8&oe=UTF8&selm=TQZSwId5BHA.2436%40cpmsftngxa08&rnum=3 using System; 
using System.Runtime.InteropServices; namespace RAS 

public class RasManager 

  public const int RAS_MaxEntryName = 256; 
  public const int RAS_MaxPhoneNumber = 128; 
  public const int UNLEN = 256; 
  public const int PWLEN = 256; 
  public const int DNLEN = 15; 
  public const int MAX_PATH = 260; 
  public const int RAS_MaxDeviceType = 16; 
  public const int RAS_MaxCallbackNumber =  RAS_MaxPhoneNumber;   public delegate void Callback(uint unMsg, int rasconnstate, int dwError);   [StructLayout(LayoutKind.Sequential, Pack=4,  CharSet=CharSet.Auto)] 
  public struct RASDIALPARAMS 
  { 
   public int dwSize; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=RAS_MaxEntryName + 1)] 
   public string szEntryName; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=RAS_MaxPhoneNumber + 1)] 
   public string szPhoneNumber; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=RAS_MaxCallbackNumber+ 1)] 
   public string szCallbackNumber; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=UNLEN + 1)] 
   public string szUserName; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=PWLEN + 1)] 
   public string szPassword; 
   [MarshalAs(UnmanagedType.ByValTStr,  SizeConst=DNLEN + 1)] 
   public string szDomain; 
   public int dwSubEntry; 
   public int dwCallbackId; 
  }   [DllImport("rasapi32.dll", CharSet=CharSet.Auto)] 
  public static extern int RasDial (int lpRasDialExtensions, string 
lpszPhonebook, 
   ref RASDIALPARAMS lprasdialparams, int dwNotifierType, 
   Callback lpvNotifier, ref int lphRasConn);   private RASDIALPARAMS RasDialParams; 
  private int Connection;     public RasManager() 
  { 
   Connection = 0; 
   RasDialParams = new RASDIALPARAMS(); 
   RasDialParams.dwSize = Marshal.SizeOf(RasDialParams); 
  }   #region Properties 
  public string UserName 
  { 
   get 
   { 
    return RasDialParams.szUserName; 
   } 
   set 
   { 
    RasDialParams.szUserName = value; 
   } 
  }   public string Password 
  { 
   get 
   { 
    return RasDialParams.szPassword; 
   } 
   set 
   { 
    RasDialParams.szPassword = value; 
   } 
  }   public string EntryName 
  { 
   get 
   { 
    return RasDialParams.szEntryName; 
   } 
   set 
   { 
    RasDialParams.szEntryName = value; 
   } 
  } 
  #endregion   public int Connect() 
  { 
   Callback rasDialFunc = new Callback(RasManager.RasDialFunc); 
   RasDialParams.szEntryName += "\0"; 
   RasDialParams.szUserName += "\0"; 
   RasDialParams.szPassword += "\0"; 
   int result = RasDial (0, null, ref RasDialParams, 0, rasDialFunc, ref 
Connection); 
   return result; 
  }   public static void RasDialFunc(uint unMsg, int rasconnstate, int dwError) 
  { 
  }