⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aescrypt.cpp

📁 AES, 即Advanced Encryption Standard高级加密标准模块, 它是目前国际上最先进的加密技术, 是基于DES之后的最新发布的高段加密标准. 该标准由美国NIST(Nation
💻 CPP
字号:
/*
 *  AESCrypt.cpp
 *
 *  Copyright (C) 2006
 *  Paul E. Jones <paulej@arid.us>
 *  All Rights Reserved.
 *
 ******************************************************************************
 *  $Id: AESCrypt.cpp,v 1.2 2006/06/07 05:29:18 paulej Exp $
 ******************************************************************************
 *
 *  This module contains the main entry points for the DLL that are
 *  called by the Windows shell (Explorer) and by the AESCrypt32.exe
 *  program.
 *
 */


#include "stdafx.h"
#include "resource.h"
#include "AESCrypt.h"
#include "AESCryptWorkerThreads.h"

class AESCryptModule : public CAtlDllModuleT< AESCryptModule >
{
    public:
        DECLARE_LIBID(LIBID_AESCryptLib)
        DECLARE_REGISTRY_APPID_RESOURCEID(
                        IDR_AESCRYPT,
                        "{BACE464C-A450-46A7-BC98-F441BCE45CE9}")
};

// Create an ATL module instance
AESCryptModule _AtlModule;

// AES Crypt Worker Threads class
AESCryptWorkerThreads AES_Crypt_Worker_Threads;

#ifdef _MANAGED
#pragma managed(push, off)
#endif

// DLL Entry Point
extern "C" BOOL WINAPI DllMain( HINSTANCE hInstance,
                                DWORD dwReason,
                                LPVOID lpReserved)
{
    return _AtlModule.DllMain(dwReason, lpReserved); 
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

// Used to determine whether the DLL can be unloaded by OLE
STDAPI DllCanUnloadNow(void)
{
    if (AES_Crypt_Worker_Threads.IsBusy())
    {
        return S_FALSE;
    }
    else
    {
        return _AtlModule.DllCanUnloadNow();
    }
}

// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(   REFCLSID rclsid,
                            REFIID riid,
                            LPVOID* ppv)
{
    return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}


// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
    // If we're on NT, add ourselves to the list of approved shell extensions.
    if ((GetVersion() & 0x80000000UL) == 0)
    {
        CRegKey reg;
        LONG    lRet;

        lRet = reg.Open(HKEY_LOCAL_MACHINE,
                        _T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),
                        KEY_SET_VALUE);

        if (lRet != ERROR_SUCCESS)
        {
            return E_ACCESSDENIED;
        }

        lRet = reg.SetStringValue(
                        _T("{35872D53-3BD4-45FA-8DB5-FFC47D4235E7}"),
                        _T("AESCrypt"));

        if (lRet != ERROR_SUCCESS)
        {
            return HRESULT_FROM_WIN32(lRet);
        }
    }

    HRESULT hr = _AtlModule.DllRegisterServer(FALSE);
    return hr;
}


// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
    // If we're on NT, remove ourselves from the list of approved shell extensions.
    if ((GetVersion() & 0x80000000UL) == 0)
    {
        CRegKey reg;
        LONG    lRet;

        lRet = reg.Open(HKEY_LOCAL_MACHINE,
                        _T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),
                        KEY_SET_VALUE);

        if (lRet == ERROR_SUCCESS)
        {
            lRet = reg.DeleteValue(_T("{35872D53-3BD4-45FA-8DB5-FFC47D4235E7}") );
        }
    }

    HRESULT hr = _AtlModule.DllUnregisterServer(FALSE);
    return hr;
}

__declspec(dllexport) void __cdecl ProcessFiles(StringList *file_list,
                                                bool encrypt)
{
   AES_Crypt_Worker_Threads.ProcessFiles(file_list, encrypt);
}

__declspec(dllexport) bool __cdecl AESLibBusy()
{
   return AES_Crypt_Worker_Threads.IsBusy();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -