0

この質問は、Rasdial と pbk ファイルに関するものです。「rassetentryproperties」を使用して pbk ファイルを更新し、「rasdialdlg」を介してダイヤルしています。

以下のフラグは、ダイヤルアップ接続のプロパティを担当する pbk ファイルのパラメーターを決定します。フラグを次のようにプリセットしています。

RasEntry.dwfOptions = 0x00000000;
RasEntry.dwfOptions2 = 0x00000000;

Flag1とFlag2を設定するには、以下のようにしようとしています。

RasEntry.dwfOptions |= (Set Flag1 | Set Flag2) 

ただし、上記で設定したように、pbk ファイルのエントリは実際には設定されていません。

また、同じコードでも Win7 pbk と win XP pbk では違います。どこが間違っていますか?

参照用のコード サンプル:

BOOL Create_Phone_Book ( LPTSTR DeviceName ) {

    DWORD regError;
    TCHAR DeviceName[100];


    if ( _tcscpy ( DeviceName, DeviceName ) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS );
    } else {
        Slog ( TEXT ("Strcpy Failed To copy deviceName to DeviceName"), NOLASTERROR);
        return FALSE;
    }

    RASENTRY RasEntry;
    DWORD cb;
    RASDIALPARAMS RasDialParams;

    memset((LPTSTR)&RasEntry, 0, sizeof(RASENTRY)); 

    RasEntry.dwSize = sizeof(RASENTRY);
    cb = sizeof(RASENTRY);
    regError = RasGetEntryProperties (NULL, TEXT (""), &RasEntry, &cb, NULL, NULL);

    if ( regError == ERROR_SUCCESS ) {
        Slog ( TEXT ("RasGetEntryProperties Success"), APISUCCESS );
    } else {
        RAS_ErrorHandler ( regError );
        return FALSE;
    }

    RasEntry.dwfOptions = 0x00000000;
    RasEntry.dwfOptions2 = 0x00000000;


    RasEntry.dwfOptions |= (  RASEO_IpHeaderCompression | RASEO_ModemLights |RASEO_SwCompression | 
    RASEO_ShowDialingProgress | RASEO_NetworkLogon | RASEO_DisableLcpExtensions );



    RasEntry.dwfOptions2 |= ( RASEO2_UseGlobalDeviceSettings | RASEO2_Internet );


    if ( _tcscpy ( RasEntry.szDeviceType,  RASDT_Modem ) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS );
    } else {
        Slog ( TEXT ("Strcpy Failed copy RASDT_MODEM to RasEntry.szDeviceType"), NOLASTERROR);
        return FALSE;
    }

    if ( _tcscpy ( RasEntry.szDeviceName, DeviceName ) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS );   
    } else {
        Slog ( TEXT ("Strcpy Failed copy DeviceName to RasEntry.szDeviceName"), NOLASTERROR);
        return FALSE;   
    }

    regError = RasSetEntryProperties( NULL , Dial_Up_Name, &RasEntry, sizeof(RasEntry),NULL, 0);

    if ( regError == ERROR_SUCCESS ) {
        Slog ( TEXT ("RasSetEntryProperties Succeeded"), APISUCCESS);
    } else {
        RAS_ErrorHandler ( regError );
        return FALSE;
    }

    memset((LPTSTR)&RasDialParams, 0, sizeof(RasDialParams));

    RasDialParams.dwSize = sizeof(RASDIALPARAMS);

    if ( _tcscpy (RasDialParams.szEntryName, Dial_Up_Name ) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS);
    } else {
        Slog ( TEXT ("Strcpy Failed Copy Dial_Up_Name to RasDialParams.szEntryName"), NOLASTERROR);
        return FALSE;
    }
    if ( _tcscpy (RasDialParams.szUserName, TEXT ("")) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS);    
    } else {
        Slog ( TEXT ("Strcpy Failed Copy "" to RasDialParams.szUserName"), NOLASTERROR);
        return FALSE;   
    }

    if ( _tcscpy (RasDialParams.szPassword, TEXT ("")) != NULL ) {
        Slog ( TEXT ("Strcpy Success"), APISUCCESS);    
    } else {
        Slog ( TEXT ("Strcpy Failed Copy "" to RasDialParams.szPassword"), NOLASTERROR);
        return FALSE;
    }

    regError = RasSetEntryDialParams ( NULL, &RasDialParams, FALSE);
    if ( regError == ERROR_SUCCESS ) {
        Slog ( TEXT ("RasSetEntryDialParams Success"), APISUCCESS );
    } else {
        RAS_ErrorHandler ( regError );
        return FALSE;
    }

return TRUE;

}

更新 1: 通常、好きなようにダイヤルアップ接続を作成する必要があります。添付のスクリーンショットをご覧ください。

ここに画像の説明を入力

スナップに見られるように、多くのパラメーターを設定およびリセットする必要があります (接続中の設定 - 進行状況の表示、UN および PW のリセット - プロンプト)。
これらの 2 つのフラグは、RasEntry.dwfOptions RasEntry.dwfOptions2 の「or」を使用して、必要なものを設定およびリセットするために使用します。

だから私は私のコードで何をしますか:

フラグのリセット:

RasEntry.dwfOptions = 0x00000000;

RasEntry.dwfOptions2 = 0x00000000;

そして設定する:

 RasEntry.dwfOptions |= (  RASEO_IpHeaderCompression | RASEO_ModemLights  
                           |RASEO_SwCompression | RASEO_ShowDialingProgress |  
                            RASEO_NetworkLogon | RASEO_DisableLcpExtensions );

したがって、上記以外の残りのフラグは Unset のままになります。

ここでの問題は、上記の手順で設定しているものは、実際にはダイヤルアップ接続で設定されていないことです。別の方法では、コードで設定した場合でも、一部のパラメーターが設定されません。

問題を取り除くにはどうすればよいですか?

4

0 に答える 0