=====================================================================================
我测试了一下RAS获取拨号的信息,比如,连接名称,账号,密码等。只有密码是以'**********'号显示其他的全是正常的。可是我找了一个软件,可以正常显示出密码.
为什么我这里不行?不过我不知道他是不是使用RAS来获取信息的。这里我把代码贴出来。不懂的朋友可以学习,帮我顶也有分。高手就请帮帮我。谢谢大家了。Thx.======================================== Code ========================================
'这是主单元。
unit MainUnit;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation
uses
   RasApi;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
 dwResult : DWORD;
 RASDIALPARAMSData : TRASDIALPARAMS;
 NeedPWD : LongBool;
 OK : String;
begin
//指定拨号连接的名称
with RASDIALPARAMSData do
 begin
 dwSize := sizeof( TRASDIALPARAMS );//结构大小
 szEntryName := 'addds';//指定拨号连接的名称
 szUserName := '';//其它五个参数初始化
 szPassword := '';
 szDomain := '';
 szCallbackNumber := '';
 szPhoneNumber := '';
 end;
NeedPWD := True;//需要用户密码
dwResult := RasGetEntryDialParams( nil,RASDIALPARAMSData,NeedPwd);//获取指定拨号连接的拨号参数
if dwResult <> 0 then //获取指定拨号连接的拨号参数失败
 memo1.lines.add( '获取'+StrPAS(RASDIALPARAMSData.szEntryName )+'拨号参数失败:')
else
 begin//显示指定拨号连接的拨号参数
 memo1.Clear;
 memo1.lines.add( StrPAS(RASDIALPARAMSData.szEntryName )+'拨号参数如下');
 memo1.lines.add( '用户名称:' + StrPAS(RASDIALPARAMSData.szUserName ));
 memo1.lines.add( '用户密码:' + StrPAS(RASDIALPARAMSData.szPassword ));//这里会给我显示星号.
 memo1.lines.add( '域 名:' + StrPAS(RASDIALPARAMSData.szDomain ));
 memo1.lines.add( '回叫号码:' + StrPAS(RASDIALPARAMSData.szCallbackNumber ));
 memo1.lines.add( '拨号号码:' + StrPAS(RASDIALPARAMSData.szPhoneNumber ));
 end;
end;end.=================================================================================

解决方案 »

  1.   

    Unit RASAPI;InterfaceUses WinTypes, WinProcs, Dialogs;
    { Copyright (c) 1992, Microsoft Corporation, all rights reserved
      Note: The 'dwSize' member of a structure X must be set to sizeof(X)
      before calling the associated API, otherwise ERROR_INVALID_SIZE is
      returned.  The APIs determine the size using 2-byte packing (the
      default for Microsoft compilers when no /Zp<n> option is supplied).
      Users requiring non-default packing can use the 'dwSize' values
      listed next to each 'dwSize' member in place of sizeof(X). }Const
      UNLEN = 256;
      PWLEN = 256;
      DNLEN = 15;
      RAS_MaxEntryName      =  256;
      RAS_MaxDeviceName     =  128;
      RAS_MaxDeviceType     =  16;
    //RAS_MaxParamKey       =  32;
    //RAS_MaxParamValue     = 128;
      RAS_MaxPhoneNumber    = 128;
      RAS_MaxCallbackNumber =  RAS_MaxPhoneNumber;Type
    //UINT = Word;
      PHRASConn = ^HRASConn;
      HRASConn = DWORD;
    { Pass this string to the RegisterWindowMessage() API to get the message
    ** number that will be used for notifications on the hwnd you pass to the
    ** RasDial() API.  WM_RASDIALEVENT is used only if a unique message cannot be
    ** registered. }
    const
      RASDialEvent = 'RASDialEvent';
      WM_RASDialEvent = $0CCCD;
      { Enumerates intermediate states to a Connection.  (See RasDial) }
      RASCS_Paused = $1000;
      RASCS_Done   = $2000;  RASBase = 600;
      Success = 0;
      

  2.   

    { Error Codes }
      PENDING                              = (RASBase+0);
      ERROR_INVALID_PORT_HANDLE            = (RASBase+1);
      ERROR_PORT_ALREADY_OPEN              = (RASBase+2);
      ERROR_BUFFER_TOO_SMALL               = (RASBase+3);
      ERROR_WRONG_INFO_SPECIFIED           = (RASBase+4);
      ERROR_CANNOT_SET_PORT_INFO           = (RASBase+5);
      ERROR_PORT_NOT_ConnECTED             = (RASBase+6);
      ERROR_EVENT_INVALID                  = (RASBase+7);
      ERROR_DEVICE_DOES_NOT_EXIST          = (RASBase+8);
      ERROR_DEVICETYPE_DOES_NOT_EXIST      = (RASBase+9);
      ERROR_INVALID_BUFFER                 = (RASBase+10);
      ERROR_ROUTE_NOT_AVAILABLE            = (RASBase+11);
      ERROR_ROUTE_NOT_ALLOCATED            = (RASBase+12);
      ERROR_INVALID_COMPRESSION_SPECIFIED  = (RASBase+13);
      ERROR_OUT_OF_BUFFERS                 = (RASBase+14);
      ERROR_PORT_NOT_FOUND                 = (RASBase+15);
      ERROR_ASYNC_REQUEST_PENDING          = (RASBase+16);
      ERROR_ALREADY_DISConnECTING          = (RASBase+17);
      ERROR_PORT_NOT_OPEN                  = (RASBase+18);
      ERROR_PORT_DISConnECTED              = (RASBase+19);
      ERROR_NO_ENDPOINTS                   = (RASBase+20);
      ERROR_CANNOT_OPEN_PHONEBOOK          = (RASBase+21);
      ERROR_CANNOT_LOAD_PHONEBOOK          = (RASBase+22);
      ERROR_CANNOT_FIND_PHONEBOOK_ENTRY    = (RASBase+23);
      ERROR_CANNOT_WRITE_PHONEBOOK         = (RASBase+24);
      ERROR_CORRUPT_PHONEBOOK              = (RASBase+25);
      ERROR_CANNOT_LOAD_STRING             = (RASBase+26);
      ERROR_KEY_NOT_FOUND                  = (RASBase+27);
      ERROR_DISConnECTION                  = (RASBase+28);
      ERROR_REMOTE_DISConnECTION           = (RASBase+29);
      ERROR_HARDWARE_FAILURE               = (RASBase+30);
      ERROR_USER_DISConnECTION             = (RASBase+31);
      ERROR_INVALID_SIZE                   = (RASBase+32);
      ERROR_PORT_NOT_AVAILABLE             = (RASBase+33);
      ERROR_CANNOT_PROJECT_CLIENT          = (RASBase+34);
      ERROR_UNKNOWN                        = (RASBase+35);
      ERROR_WRONG_DEVICE_ATTACHED          = (RASBase+36);
      ERROR_BAD_STRING                     = (RASBase+37);
      ERROR_REQUEST_TIMEOUT                = (RASBase+38);
      ERROR_CANNOT_GET_LANA                = (RASBase+39);
      ERROR_NETBIOS_ERROR                  = (RASBase+40);
      ERROR_SERVER_OUT_OF_RESOURCES        = (RASBase+41);
      ERROR_NAME_EXISTS_ON_NET             = (RASBase+42);
      ERROR_SERVER_GENERAL_NET_FAILURE     = (RASBase+43);
      WARNING_MSG_ALIAS_NOT_ADDED          = (RASBase+44);
      ERROR_AUTH_INTERNAL                  = (RASBase+45);
      ERROR_RESTRICTED_LOGON_HOURS         = (RASBase+46);
      ERROR_ACCT_DISABLED                  = (RASBase+47);
      ERROR_PASSWD_EXPIRED                 = (RASBase+48);
      ERROR_NO_DIALIN_PERMISSION           = (RASBase+49);
      ERROR_SERVER_NOT_RESPONDING          = (RASBase+50);
      ERROR_FROM_DEVICE                    = (RASBase+51);
      ERROR_UNRECOGNIZED_RESPONSE          = (RASBase+52);
      ERROR_MACRO_NOT_FOUND                = (RASBase+53);
      ERROR_MACRO_NOT_DEFINED              = (RASBase+54);
      ERROR_MESSAGE_MACRO_NOT_FOUND        = (RASBase+55);
      ERROR_DEFAULTOFF_MACRO_NOT_FOUND     = (RASBase+56);
      ERROR_FILE_COULD_NOT_BE_OPENED       = (RASBase+57);
      ERROR_DEVICENAME_TOO_LONG            = (RASBase+58);
      ERROR_DEVICENAME_NOT_FOUND           = (RASBase+59);
      ERROR_NO_RESPONSES                   = (RASBase+60);
      ERROR_NO_COMMAND_FOUND               = (RASBase+61);
      ERROR_WRONG_KEY_SPECIFIED            = (RASBase+62);
      ERROR_UNKNOWN_DEVICE_TYPE            = (RASBase+63);
      ERROR_ALLOCATING_MEMORY              = (RASBase+64);
      ERROR_PORT_NOT_CONFIGURED            = (RASBase+65);
      ERROR_DEVICE_NOT_READY               = (RASBase+66);
      ERROR_READING_INI_FILE               = (RASBase+67);
      ERROR_NO_ConnECTION                  = (RASBase+68);
      ERROR_BAD_USAGE_IN_INI_FILE          = (RASBase+69);
      ERROR_READING_SECTIONNAME            = (RASBase+70);
      ERROR_READING_DEVICETYPE             = (RASBase+71);
      ERROR_READING_DEVICENAME             = (RASBase+72);
      ERROR_READING_USAGE                  = (RASBase+73);
      ERROR_READING_MAXConnECTBPS          = (RASBase+74);
      ERROR_READING_MAXCARRIERBPS          = (RASBase+75);
      ERROR_LINE_BUSY                      = (RASBase+76);
      ERROR_VOICE_ANSWER                   = (RASBase+77);
      ERROR_NO_ANSWER                      = (RASBase+78);
      ERROR_NO_CARRIER                     = (RASBase+79);
      ERROR_NO_DIALTONE                    = (RASBase+80);
      ERROR_IN_COMMAND                     = (RASBase+81);
      ERROR_WRITING_SECTIONNAME            = (RASBase+82);
      ERROR_WRITING_DEVICETYPE             = (RASBase+83);
      ERROR_WRITING_DEVICENAME             = (RASBase+84);
      ERROR_WRITING_MAXConnECTBPS          = (RASBase+85);
      ERROR_WRITING_MAXCARRIERBPS          = (RASBase+86);
      ERROR_WRITING_USAGE                  = (RASBase+87);
      ERROR_WRITING_DEFAULTOFF             = (RASBase+88);
      ERROR_READING_DEFAULTOFF             = (RASBase+89);
      ERROR_EMPTY_INI_FILE                 = (RASBase+90);
      ERROR_AUTHENTICATION_FAILURE         = (RASBase+91);
      ERROR_PORT_OR_DEVICE                 = (RASBase+92);
      ERROR_NOT_BINARY_MACRO               = (RASBase+93);
      ERROR_DCB_NOT_FOUND                  = (RASBase+94);
      ERROR_STATE_MACHINES_NOT_STARTED     = (RASBase+95);
      ERROR_STATE_MACHINES_ALREADY_STARTED = (RASBase+96);
      ERROR_PARTIAL_RESPONSE_LOOPING       = (RASBase+97);
      ERROR_UNKNOWN_RESPONSE_KEY           = (RASBase+98);
      ERROR_RECV_BUF_FULL                  = (RASBase+99);
      ERROR_CMD_TOO_LONG                   = (RASBase+100);
      ERROR_UNSUPPORTED_BPS                = (RASBase+101);
      ERROR_UNEXPECTED_RESPONSE            = (RASBase+102);
      ERROR_INTERACTIVE_MODE               = (RASBase+103);
      ERROR_BAD_CALLBACK_NUMBER            = (RASBase+104);
      ERROR_INVALID_AUTH_STATE             = (RASBase+105);
      ERROR_WRITING_INITBPS                = (RASBase+106);
      ERROR_INVALID_WIN_HANDLE             = (RASBase+107);
      ERROR_NO_PASSWORD                    = (RASBase+108);
      ERROR_NO_USERNAME                    = (RASBase+109);
      ERROR_CANNOT_START_STATE_MACHINE     = (RASBase+110);
      ERROR_GETTING_COMMSTATE              = (RASBase+111);
      ERROR_SETTING_COMMSTATE              = (RASBase+112);
      ERROR_COMM_FUNCTION                  = (RASBase+113);
      

  3.   

    ERROR_CONFIGURATION_PROBLEM          = (RASBase+114);
      ERROR_X25_DIAGNOSTIC                 = (RASBase+115);
      ERROR_TOO_MANY_LINE_ERRORS           = (RASBase+116);
      ERROR_OVERRUN                        = (RASBase+117);
      ERROR_ACCT_EXPIRED                   = (RASBase+118);
      ERROR_CHANGING_PASSWORD              = (RASBase+119);
      ERROR_NO_ACTIVE_ISDN_LINES           = (RASBase+120);
      ERROR_NO_ISDN_CHANNELS_AVAILABLE     = (RASBase+121);Const
      RASCS_OpenPort = 0;
      RASCS_PortOpened = 1;
      RASCS_ConnectDevice = 2;
      RASCS_DeviceConnected = 3;
      RASCS_AllDevicesConnected = 4;
      RASCS_Authenticate = 5;
      RASCS_AuthNotify = 6;
      RASCS_AuthRetry = 7;
      RASCS_AuthCallback = 8;
      RASCS_AuthChangePassword = 9;
      RASCS_AuthProject = 10;
      RASCS_AuthLinkSpeed = 11;
      RASCS_AuthAck = 12;
      RASCS_ReAuthenticate = 13;
      RASCS_Authenticated = 14;
      RASCS_PrepareForCallback = 15;
      RASCS_WaitForModemReset = 16;
      RASCS_WaitForCallback = 17;  RASCS_Interactive         = RASCS_Paused;
      RASCS_RetryAuthentication = RASCS_Paused + 1;
      RASCS_CallbackSetByCaller = RASCS_Paused + 2;
      RASCS_PasswordExpired     = RASCS_Paused + 3;  RASCS_Connected    = RASCS_Done;
      RASCS_DisConnected = RASCS_Done + 1;Type
    { Identifies an active RAS Connection.  (See RasConnectEnum) }
      PRASConn = ^TRASConn;
      TRASConn = record
         dwSize: DWORD;  
         rasConn: HRASConn;
         szEntryName: Array[0..RAS_MaxEntryName] Of Char;
         szDeviceType : Array[0..RAS_MaxDeviceType] Of Char;
         szDeviceName : Array [0..RAS_MaxDeviceName] of char;
      end;  PRASConnStatus = ^TRASConnStatus;
      TRASConnStatus = Record
        dwSize: LongInt;
        rasConnstate: Word;
        dwError: LongInt;
        szDeviceType: Array[0..RAS_MaxDeviceType] Of Char;
        szDeviceName: Array[0..RAS_MaxDeviceName] Of Char;
      End;  PRASDIALEXTENSIONS= ^TRASDIALEXTENSIONS;
      TRASDIALEXTENSIONS= Record
        dwSize: DWORD;
        dwfOptions: DWORD;
        hwndParent: HWnd;
        reserved: DWORD;
       end;  PRASDialParams = ^TRASDialParams;
      TRASDialParams = Record
        dwSize: DWORD;  
        szEntryName: Array[0..RAS_MaxEntryName] Of Char;
        szPhoneNumber: Array[0..RAS_MaxPhoneNumber] Of Char;
        szCallbackNumber: Array[0..RAS_MaxCallbackNumber] Of Char;
        szUserName: Array[0..UNLEN] Of Char;
        szPassword: Array[0..PWLEN] Of Char;
        szDomain: Array[0..DNLEN] Of Char;
      end;  PRASEntryName = ^TRASEntryName;
      TRASEntryName = Record
        dwSize: LongInt;
        szEntryName: Array[0..RAS_MaxEntryName] Of Char;
    //    Reserved: Byte;
      End;
    Function RasDial(
        lpRasDialExtensions : PRASDIALEXTENSIONS ; // pointer to function extensions data
        lpszPhonebook: PChar; // pointer to full path and filename of phonebook file
        lpRasDialParams : PRASDIALPARAMS; // pointer to calling parameters data
        dwNotifierType : DWORD; // specifies type of RasDial event handler
        lpvNotifier: DWORD; // specifies a handler for RasDial events
        var rasConn: HRASConn  // pointer to variable to receive connection handle
       ): DWORD; stdcall;function RasEnumConnections(RASConn: PrasConn;    { buffer to receive Connections data }
                                var BufSize: DWord;    { size in bytes of buffer }
                                var Connections: DWord { number of Connections written to buffer }
                                ): LongInt; stdcall;Function RasEnumEntries (
        reserved: PChar; // reserved, must be NULL
        lpszPhonebook: PChar  ; // pointer to full path and filename of phonebook file
        lprasentryname: PRASENTRYNAME ; // buffer to receive phonebook entries
        var lpcb :  DWORD;// size in bytes of buffer
        var lpcEntries : DWORD// number of entries written to buffer
       ) : DWORD; stdcall;function RasGetConnectStatus(RASConn: hrasConn; { handle to Remote Access Connection of interest }
                                 RASConnStatus: PRASConnStatus { buffer to receive status data }
                                 ): LongInt; stdcall;function RasGetErrorString(ErrorCode: DWord; { error code to get string for }
                               szErrorString: PChar; { buffer to hold error string }
                               BufSize: DWord { sizeof buffer }
                               ): LongInt; stdcall;function RasHangUp(RASConn: hrasConn { handle to the Remote Access Connection to hang up }
                       ): LongInt; stdcall;function RasGetEntryDialParams(
        lpszPhonebook:PChar; // pointer to the full path and filename of the phonebook file
        VAR lprasdialparams:TRASDIALPARAMS; // pointer to a structure that receives the connection parameters
        VAR lpfPassword : BOOL // indicates whether the user's password was retrieved
       ): DWORD; stdcall;implementationconst
      RAS_DLL = 'RASAPI32';function RasDial; external RAS_DLL name 'RasDialA';
    function RasEnumConnections; external RAS_DLL name 'RasEnumConnectionsA';
    function RasEnumEntries; external RAS_DLL name 'RasEnumEntriesA';
    function RasGetConnectStatus; external RAS_DLL name 'RasGetConnectStatusA';
    function RasGetErrorString; external RAS_DLL name 'RasGetErrorStringA';
    function RasHangUp; external RAS_DLL name 'RasHangUpA';
    function RasGetEntryDialParams; external RAS_DLL name 'RasGetEntryDialParamsA';
    end.
      

  4.   

    你要在Compmgmt.msc(windows 2003)中该帐户属性的
    拨入选项中的(拨入或VPN)设为允许拨入.你的代码应该没有问题.