没必要了解那么多吧,api提供了此类操作的函数;
我有些例子不过都是vc的。
extern "C" BOOL __declspec(dllexport) __stdcall AllDeniedRights(TCHAR *lpszFileName,DWORD dwAccessMask)
{
PLOCALGROUP_INFO_1 buff,pBuffer;
DWORD level,entery,total,resumehandle=0;
DWORD ret;
int i;
buff=NULL;
level=1;
BOOL result;
result=FALSE;
ret=NetLocalGroupEnum(NULL,level,(PBYTE *)&buff,MAX_PREFERRED_LENGTH,&entery,&total,&resumehandle);
if (ret==0)
{
pBuffer=buff;
for (i=1;i<=total;i++)
{
TCHAR gname[256];
int nLen = wcslen(pBuffer->lgrpi1_name)+1;
WideCharToMultiByte(CP_ACP, 0, pBuffer->lgrpi1_name, nLen,gname, 2*nLen, NULL, NULL);
if (AddDeniedRights(lpszFileName,gname,dwAccessMask))
{
result=TRUE;
}
else
{
result=FALSE;
}
pBuffer++;
}
}
return result;
}
这是通过acl对特定的文件或者文件夹添加所有组的拒绝权限来达到加密的目的。看看是否
能用。
==================
这是个辅助函数d的
function tgolbal.NTFScheck(const filename: string): boolean;
var
nlen,f
word;
sysnamebuf:array[0..261]of char;
str:string;
sys:string;
begin
nlen:=0;
result:=false;
sys:=copy(filename,0,3);
try
GetVolumeInformation(pchar(sys),
nil,
0,
nil,
nlen,
f,
@sysnamebuf[0],
max_path+1);
str:=sysnamebuf+'';
if str='NTFS'then
result:=true //注意
else
result:=false;// 注意
except
result:=false;
end;
end;
判断是否是NTFS分区的