この質問は、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 のままになります。
ここでの問題は、上記の手順で設定しているものは、実際にはダイヤルアップ接続で設定されていないことです。別の方法では、コードで設定した場合でも、一部のパラメーターが設定されません。
問題を取り除くにはどうすればよいですか?