天天看點

使用Win32API函數保護你的檔案

      在程式開發過程中,經常遇到需要保護使用者資訊和私有資料不被他人竊取的情況,也就是要對資料進行加密。在Win2000以前,要對資料進行加密和解密操作,一般要使用CryptAPI函數,相當煩瑣。幸運的是,從Win2000開始,作業系統從核心的級别上提供了對檔案進行加密和解密的函數,而且使用起來相當簡單。

    加密的函數是

    BOOL EncryptFile(

        LPCTSTR lpFileName  //檔案名

    );

    參數lpFileName可以是檔案名,也可以是目錄名,如果是目錄名,那麼以後在該目錄下建立的檔案都将被自動加密。如果函數執行成功,将傳回非零值,否則,傳回值為零,可以通過GetLastError()函數得到錯誤代碼。

    解密函數是

    BOOL DecryptFile(

        LPCTSTR lpFileName,    // 要解密的檔案名或目錄名

        DWORD dwReserved     // 保留參數,必須為0

    參數lpFileName如果是目錄名,則該目錄下的所有檔案将被解密,并且以後在該目錄下建立的檔案不再被自動加密。如果函數執行成功,将傳回非零值,否則,傳回值為零,可以通過GetLastError()函數得到錯誤代碼。

    這兩個函數實際上是把檔案系統和Windows的系統帳戶幫定起來,使用者加密檔案後,自己仍然可以随意檢視(不需要先解密);但具有相同權限級别的其他使用者不能檢視,當他們打開你加過密的檔案時,将得到“拒絕通路”的警告資訊。還要注意的是,比你權限級别高的使用者(超級管理者),仍然可以随意檢視你的檔案。

    下面是一小段例子程式,編譯該程式後,你可以通過指令行進行加密解密操作。