zoukankan      html  css  js  c++  java
  • 根据不同的操作系统(64/32),设置文件以64位运行。又可解决问题:“试图加载不正确的程序”。

    //button事件

    void CSqlConTestDlg::OnOK()

    {

             CString strPath = "cmd.exe";

             if(IsWow64())

             {

                       Wow64DisableWow64FsRedirection(NULL);

             }

             STARTUPINFO si = {sizeof(STARTUPINFO)};

             ZeroMemory(&si,sizeof(STARTUPINFO));

             si.cb = sizeof(STARTUPINFO);

             si.wShowWindow = SW_SHOW;

             si.dwFlags = STARTF_USESHOWWINDOW;

             PROCESS_INFORMATION pi;

             memset(&pi,0,sizeof(pi));

             if(CreateProcess(NULL,(char*)(LPCSTR)strPath,NULL,NULL,false,0,NULL,NULL,&si,&pi))

             {  

             }

             //阻塞上一进程

             while (WaitForSingleObject(pi.hProcess,20))

             {

                       ;

             }

             Wow64RevertWow64FsRedirection(NULL);

    }

    /****************************************************/

    /*判断是否是64位系统                                                                 */

    /****************************************************/

    typedef BOOL (WINAPI *LPEN_ISWOW64PROCESS)(HANDLE,PBOOL);

    BOOL CSqlConTestDlg::IsWow64()

    {

             BOOL bIsWow64 = false;

             LPEN_ISWOW64PROCESS fnIsWow64Process;

             fnIsWow64Process = (LPEN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

             if(NULL != fnIsWow64Process)

             {

                       if(!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)){};

             }

             return bIsWow64;

    }

    /****************************************************/

    /*如果系统是64位,取消文件的重点位                                         */

    /****************************************************/

    typedef BOOL (WINAPI *LPEN_WOW64DISABLEWOW64FSREDIRECTION)(PVOID* OldValue);

    BOOL CSqlConTestDlg::Wow64DisableWow64FsRedirection(PVOID* OldValue)

    {

             BOOL bRet = false;

             LPEN_WOW64DISABLEWOW64FSREDIRECTION fnWow64DisableWow64FsRedirection;

             fnWow64DisableWow64FsRedirection = (LPEN_WOW64DISABLEWOW64FSREDIRECTION)

                       GetProcAddress(GetModuleHandle(TEXT("kernel32")),"Wow64DisableWow64FsRedirection");

             if(NULL != fnWow64DisableWow64FsRedirection)

             {

                       if(fnWow64DisableWow64FsRedirection(OldValue))

                       {

                                bRet =      true;

                       }

             }

             return bRet;

    }

    /****************************************************/

    /*如果系统是64位,恢复文件的重点位                                         */

    /****************************************************/

    typedef BOOL (WINAPI *LPEN_WOW64REVERTWOW64FSREDIRECTION)(PVOID OldValue);

    BOOL CSqlConTestDlg::Wow64RevertWow64FsRedirection(PVOID OldValue)

    {

             BOOL bRet = false;

             LPEN_WOW64REVERTWOW64FSREDIRECTION fnWow64RevertWow64FsRedirection;

             fnWow64RevertWow64FsRedirection = (LPEN_WOW64REVERTWOW64FSREDIRECTION)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"Wow64RevertWow64FsRedirection");

             if(NULL != fnWow64RevertWow64FsRedirection)

             {

                       if(fnWow64RevertWow64FsRedirection(OldValue))

                       {

                                bRet = true;

                       }

             }

             return bRet;

    }        

  • 相关阅读:
    bzoj2683简单题 cdq分治
    bzoj3963[WF2011]MachineWorks cdq分治+斜率优化dp
    bzoj1767[Ceoi2009]harbingers 斜率优化dp
    bzoj2753[SCOI2012]滑雪与时间胶囊 最小生成树
    bzoj1492[NOI2007]货币兑换Cash cdq分治+斜率优化dp
    刷题总结——pole(uva 1638 dp)
    刷题总结——分配笔名(51nod1526 trie树)
    刷题总结——树有几多愁(51nod1673 虚树+状压dp+贪心)
    刷题总结——book of evil(codefoeces 337D)
    刷题总结——解方程(NOIP2014)
  • 原文地址:https://www.cnblogs.com/zzhua/p/5697573.html
Copyright © 2011-2022 走看看