• 根据不同的操作系统(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;

    }        

  • 相关阅读:
    oracle用户和权限
    oracle中的索引
    oracle中的序列
    oracle中的视图
    oracle PL/SQL块
    oracle创建表案列
    半导体随机存储器
    IEEE754标准
    定点数的移位操作
    真值,原码,反码以及补码和移码总结
  • 原文地址:https://www.cnblogs.com/zzhua/p/5697573.html
Copyright © 2020-2023  润新知