X-Git-Url: http://git.sourceforge.jp/view?p=ffftp%2Fffftp.git;a=blobdiff_plain;f=registry.c;h=f2f7e05f71e17927c36fe2793760d34d517a26c5;hp=616fc83b60f0ffc6bcb00dcab0bd5e6646b28b80;hb=4ba73d7cc7a7ac164a08b47a2be7d2cb3c7b890a;hpb=08cb92f946f548cab1ed9738b6bdda9e65247935 diff --git a/registry.c b/registry.c index 616fc83..f2f7e05 100644 --- a/registry.c +++ b/registry.c @@ -193,6 +193,10 @@ extern int FolderAttrNum; // 暗号化通信対応 extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20]; extern BYTE SSLRootCAFileHash[20]; +// ファイルアイコン表示対応 +extern int DispFileIcon; +// ディレクトリ自動作成 +extern int MakeAllDir; /*----- マスタパスワードの設定 ---------------------------------------------- * @@ -217,6 +221,12 @@ void SetMasterPassword( const char* Password ) IsMasterPasswordError = PASSWORD_OK; } +// セキュリティ強化 +void GetMasterPassword(char* Password) +{ + strcpy(Password, SecretKey); +} + /*----- マスタパスワードの状態取得 ---------------------------------------------- * * Parameter @@ -291,7 +301,7 @@ int ValidateMasterPassword(void) * なし *----------------------------------------------------------------------------*/ -void SaveRegistory(void) +void SaveRegistry(void) { void *hKey3; void *hKey4; @@ -611,6 +621,10 @@ void SaveRegistory(void) StrCatOut((char*)&SSLRootCAFileHash, sizeof(SSLRootCAFileHash), Buf); EncodePassword(Buf, Str); WriteStringToReg(hKey4, "RootCertHash", Str); + // ファイルアイコン表示対応 + WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon); + // ディレクトリ自動作成 + WriteIntValueToReg(hKey4, "MakeDir", MakeAllDir); } CloseSubKey(hKey4); } @@ -631,7 +645,7 @@ void SaveRegistory(void) * NO: 読み出し失敗(設定無し) *----------------------------------------------------------------------------*/ -int LoadRegistory(void) +int LoadRegistry(void) { void *hKey3; void *hKey4; @@ -956,6 +970,12 @@ int LoadRegistory(void) // 同時接続対応 ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount); ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt); + // 1.98d以前で同時接続数が1より大きい場合はソケットの再利用なし + if(Version < 1985) + { + if(Host.MaxThreadCount > 1) + Host.ReuseCmdSkt = NO; + } // MLSD対応 ReadIntValueFromReg(hKey5, "MLSD", &Host.UseMLSD); // IPv6対応 @@ -980,6 +1000,10 @@ int LoadRegistory(void) ReadStringFromReg(hKey4, "RootCertHash", Str, PRIVATE_KEY_LEN*4+1); DecodePassword(Str, Buf); StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash); + // ファイルアイコン表示対応 + ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon); + // ディレクトリ自動作成 + ReadIntValueFromReg(hKey4, "MakeDir", &MakeAllDir); CloseSubKey(hKey4); } @@ -1021,7 +1045,7 @@ int LoadRegistory(void) * YES/NO=設定無し *----------------------------------------------------------------------------*/ -DWORD LoadHideDriveListRegistory(void) +DWORD LoadHideDriveListRegistry(void) { HKEY hKey1; HKEY hKey2; @@ -1073,7 +1097,7 @@ DWORD LoadHideDriveListRegistory(void) * なし *----------------------------------------------------------------------------*/ -void ClearRegistory(void) +void ClearRegistry(void) { HKEY hKey2; HKEY hKey3; @@ -1112,6 +1136,20 @@ void ClearRegistory(void) } +// ポータブル版判定 +void ClearIni(void) +{ +// FILE *Strm; +// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) +// { +// fclose(Strm); +// MoveFileToTrashCan(AskIniFilePath()); +// } + DeleteFile(AskIniFilePath()); + return; +} + + /*----- 設定をファイルに保存 -------------------------------------------------- * * Parameter @@ -1948,18 +1986,20 @@ static int CloseReg(void *Handle) { REGDATATBL *Pos; REGDATATBL *Next; - FILE *Strm; + // ポータブル版判定 +// FILE *Strm; if(TmpRegType == REGTYPE_REG) { RegCloseKey(Handle); /* INIファイルを削除 */ - if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) - { - fclose(Strm); - MoveFileToTrashCan(AskIniFilePath()); - } + // ポータブル版判定 +// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) +// { +// fclose(Strm); +// MoveFileToTrashCan(AskIniFilePath()); +// } } else { @@ -1968,7 +2008,7 @@ static int CloseReg(void *Handle) if(WriteOutRegToFile(Handle) == TRUE) { // /* レジストリをクリア */ -// ClearRegistory(); +// ClearRegistry(); } } /* テーブルを削除 */ @@ -2909,3 +2949,33 @@ DWORD GetRandamDWRODValue(void) } return rndValue; } + +// ポータブル版判定 +int IsRegAvailable() +{ + int Sts; + void* h; + Sts = NO; + SetRegType(REGTYPE_REG); + if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS) + { + CloseReg(h); + Sts = YES; + } + return Sts; +} + +int IsIniAvailable() +{ + int Sts; + void* h; + Sts = NO; + SetRegType(REGTYPE_INI); + if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS) + { + CloseReg(h); + Sts = YES; + } + return Sts; +} +