OSDN Git Service

Fix bugs of playing sound.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index b6cef18..6ea14fc 100644 (file)
--- a/main.c
+++ b/main.c
@@ -234,30 +234,66 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 \r
        // プロセス保護\r
 #ifdef ENABLE_PROCESS_PROTECTION\r
-       BOOL bProtect;\r
+       DWORD ProtectLevel;\r
        char* pCommand;\r
        char Option[FMAX_PATH+1];\r
-       bProtect = FALSE;\r
+       ProtectLevel = PROCESS_PROTECTION_NONE;\r
        pCommand = lpszCmdLine;\r
        while(pCommand = GetToken(pCommand, Option))\r
        {\r
                if(strcmp(Option, "--protect") == 0)\r
                {\r
-                       bProtect = TRUE;\r
+                       ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-high") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_HIGH;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-medium") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-low") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_LOW;\r
                        break;\r
                }\r
        }\r
-       InitializeLoadLibraryHook();\r
-       if(bProtect)\r
+       if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
        {\r
+               SetProcessProtectionLevel(ProtectLevel);\r
+               if(!InitializeLoadLibraryHook())\r
+               {\r
+                       MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
 #ifndef _DEBUG\r
-               if(IsDebuggerPresent() || RestartProtectedProcess(" --restart"))\r
+               if(IsDebuggerPresent())\r
+               {\r
+                       MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
                        return 0;\r
+               }\r
 #endif\r
-               // DLLの検証の前にロードされている必要があるDLL\r
-               LoadLibrary("shell32.dll");\r
-               EnableLoadLibraryHook(TRUE);\r
+               if(!UnloadUntrustedModule())\r
+               {\r
+                       MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
+#ifndef _DEBUG\r
+               if(RestartProtectedProcess(" --restart"))\r
+                       return 0;\r
+#endif\r
+               if(!EnableLoadLibraryHook(TRUE))\r
+               {\r
+                       MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
        }\r
+       else\r
+               InitializeLoadLibraryHook();\r
 #endif\r
 \r
 #ifdef DISABLE_MULTI_CPUS\r
@@ -463,7 +499,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                                        DispWindowTitle();\r
                                        // SourceForge.JPによるフォーク\r
 //                                     SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.");\r
-                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 Hiromichi Matsushima, Suguru Kawamoto.");\r
+                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto).");\r
 \r
                                        if(ForceIni)\r
                                                SetTaskMsg("%s%s", MSGJPN283, IniPath);\r
@@ -1735,6 +1771,15 @@ static int AnalyzeComLine(char *Str, int *AutoConnect, int *CmdOption, char *unc
                        else if(strcmp(Tmp, "--protect") == 0)\r
                        {\r
                        }\r
+                       else if(strcmp(Tmp, "--protect-high") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect-medium") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect-low") == 0)\r
+                       {\r
+                       }\r
 #endif\r
                        else\r
                        {\r
@@ -2722,12 +2767,29 @@ int AskAutoExit(void)
 int EnterMasterPasswordAndSet( int Res, HWND hWnd )\r
 {\r
        char buf[MAX_PASSWORD_LEN + 1];\r
+       // パスワードの入力欄を非表示\r
+       // 非表示にしたため新しいパスワードを2回入力させる\r
+       char buf1[MAX_PASSWORD_LEN + 1];\r
        char *p;\r
        int Flag;\r
 \r
        buf[0] = NUL;\r
        if( InputDialogBox(Res, hWnd, NULL, buf, MAX_PASSWORD_LEN + 1,\r
                &Flag, IDH_HELP_TOPIC_0000064) == YES){\r
+               // パスワードの入力欄を非表示\r
+               if(Res == newmasterpasswd_dlg)\r
+               {\r
+                       buf1[0] = NUL;\r
+                       if( InputDialogBox(Res, hWnd, NULL, buf1, MAX_PASSWORD_LEN + 1,\r
+                               &Flag, IDH_HELP_TOPIC_0000064) != YES){\r
+                               return 0;\r
+                       }\r
+                       if(strcmp(buf, buf1) != 0)\r
+                       {\r
+                               MessageBox(hWnd, MSGJPN325, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
+               }\r
                /* 末尾の空白を削除 */\r
                RemoveTailingSpaces(buf);\r
                /* 先頭の空白を削除 */\r