1. 程式人生 > >後臺判斷程式檔案是否可以正確啟動

後臺判斷程式檔案是否可以正確啟動

首先這個不是什麼黑客程式,而是本渣閒得蛋疼寫的,用到 WinAPI。

我想根據一個程式的檔名來在硬碟中搜索這個程式,不考慮故意有人把別的程式名改成我要找的程式,這樣測不出來

就比如有個遊戲程式 Game.exe ,遊戲嘛大多數需要很多其他的檔案,大多數時候缺少的時候執行都會彈出 “缺少xxx.xxx程式無法啟動” 這類的錯誤對話方塊,而我要做的就是在不彈出任何錯誤提示也不進入遊戲介面的情況下找到那個“真正”的遊戲程式。

加入通過遍歷獲取了”可能正確“的程式全路徑 fullPath,然後使用如下方法:

            string CommandLine = "";

            PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION();

            STARTUPINFO sInfo = new STARTUPINFO();
            sInfo.cb = Marshal.SizeOf(sInfo);
            sInfo.dwFlags = (int)dwFlags.STARTF_USESHOWWINDOW;
            sInfo.wShowWindow = (short)nCmdShow.SW_HIDE;

            SECURITY_ATTRIBUTES pSec = new SECURITY_ATTRIBUTES();
            SECURITY_ATTRIBUTES tSec = new SECURITY_ATTRIBUTES();
            pSec.nLength = Marshal.SizeOf(pSec);
            tSec.nLength = Marshal.SizeOf(tSec);

            retValue = WinAPI.CreateProcess(
                fullPath,
                CommandLine,
                ref pSec,
                ref tSec,
                false,
                (uint)PriorityClass.NORMAL_PRIORITY_CLASS,
                IntPtr.Zero,
                null,
                ref sInfo,
                out pInfo);

            int error = Marshal.GetLastWin32Error();

            WinAPI.TerminateProcess(pInfo.hProcess, 0);
            if (error != 0)
            {
                //throw new Win32Exception(error);
                //false;
            }
            else
            {
                //true;
                Console.WriteLine("Find In: {0}.", fullPath);
            }
坑完了哭