描述:
// encrypt_judge.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <ATLBASE.H>
UINT _JudgeFileType_word(LPTSTR szFilePath)
{
LPSTORAGE pStgRoot;
LPSTREAM pMainStream;
USES_CONVERSION;
::StgOpenStorage(T2COLE(szFilePath),
NULL,
STGM_READ | STGM_SHARE_DENY_WRITE,
NULL,
0,
&pStgRoot);
if(pStgRoot->OpenStream(T2W("Word Document"),
NULL,
STGM_READ | STGM_SHARE_EXCLUSIVE,
0,
&pMainStream) != S_OK )
{
pStgRoot->Release();
}
//确定是否加密
char pTmp[20];
if(S_OK != pMainStream->Read(pTmp,20,NULL))
{
pMainStream->Release();
pStgRoot->Release();
}
unsigned short sTmp;
memcpy(&sTmp, pTmp+10,2);
if((sTmp & 0x0100) != 0)
{
pMainStream->Release();
pStgRoot->Release();
printf("The file has been encrypted!");
getchar();
return 0;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile;
_JudgeFileType_word("c:\\encrypt.doc");
return 0;
}
解决方案1:
ding
解决方案2:同意4楼
解决方案3:应该是OpenStream失败了。
解决方案4: HANDLE hFile=INVALID_HANDLE_VALUE;
_JudgeFileType_word(TEXT("c:\\encrypt.doc"));