不是说GetNamedSecurityInfoEx没有定义就是unresolve symbole
//setacl.c
#include <windows.h>
#include <aclapi.h>void setacl(char *folder){
ACTRL_ACCESS_ENTRY AccessEntry;
PACTRL_ACCESS pOldAccessList, pNewAccessList;
DWORD dwErr;// Get the current DACL information from the object.DWORD dwRes = GetNamedSecurityInfoEx(folder, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldAccessList,NULL, NULL, NULL);// Initialize the access list entry.
memset(&AccessEntry,0,sizeof(ACTRL_ACCESS_ENTRY));
//ZeroMemory(&AccessEntry, sizeof(ACTRL_ACCESS_ENTRY) );
BuildTrusteeWithName(&(AccessEntry.Trustee), "ludwig");
AccessEntry.Inheritance = NO_INHERITANCE;
AccessEntry.fAccessFlags = ACTRL_ACCESS_DENIED;// Set provider-independent standard rights.AccessEntry.Access =0;
// ACTRL_READ_CONTROL | ACTRL_SYNCHRONIZE |ACTRL_CHANGE_ACCESS | ACTRL_DELETE;// Set provider-independent rights for file objects.AccessEntry.Access =0;
//|= ACTRL_FILE_READ | ACTRL_FILE_READ_ATTRIB |ACTRL_FILE_READ_PROP | ACTRL_FILE_WRITE |ACTRL_FILE_APPEND | ACTRL_FILE_WRITE_ATTRIB |ACTRL_FILE_WRITE_PROP;// Build an access list from the access list entry.dwErr = SetEntriesInAccessList(
1, // Number of entries in array
AccessEntry, // array of entries
SET_ACCESS, // replace any existing items
NULL, // property name
pOldAccessList, // existing access list
&pNewAccessList); // new access list// Set the access-control information in the object's DACL.dwRes = SetNamedSecurityInfoEx(
folder, // name of the object
SE_FILE_OBJECT, // type of object
DACL_SECURITY_INFORMATION, // type of information to set
NULL, // name of provider
pNewAccessList, // new access list
NULL, // audit list
NULL, // name of owner
NULL, // name of group
NULL); // pointer to OVERLAPPED structure// Free the returned buffers.if (pOldAccessList)
LocalFree(pOldAccessList);
if (pNewAccessList)
LocalFree(pNewAccessList);
}
//setacl.c
#include <windows.h>
#include <aclapi.h>void setacl(char *folder){
ACTRL_ACCESS_ENTRY AccessEntry;
PACTRL_ACCESS pOldAccessList, pNewAccessList;
DWORD dwErr;// Get the current DACL information from the object.DWORD dwRes = GetNamedSecurityInfoEx(folder, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldAccessList,NULL, NULL, NULL);// Initialize the access list entry.
memset(&AccessEntry,0,sizeof(ACTRL_ACCESS_ENTRY));
//ZeroMemory(&AccessEntry, sizeof(ACTRL_ACCESS_ENTRY) );
BuildTrusteeWithName(&(AccessEntry.Trustee), "ludwig");
AccessEntry.Inheritance = NO_INHERITANCE;
AccessEntry.fAccessFlags = ACTRL_ACCESS_DENIED;// Set provider-independent standard rights.AccessEntry.Access =0;
// ACTRL_READ_CONTROL | ACTRL_SYNCHRONIZE |ACTRL_CHANGE_ACCESS | ACTRL_DELETE;// Set provider-independent rights for file objects.AccessEntry.Access =0;
//|= ACTRL_FILE_READ | ACTRL_FILE_READ_ATTRIB |ACTRL_FILE_READ_PROP | ACTRL_FILE_WRITE |ACTRL_FILE_APPEND | ACTRL_FILE_WRITE_ATTRIB |ACTRL_FILE_WRITE_PROP;// Build an access list from the access list entry.dwErr = SetEntriesInAccessList(
1, // Number of entries in array
AccessEntry, // array of entries
SET_ACCESS, // replace any existing items
NULL, // property name
pOldAccessList, // existing access list
&pNewAccessList); // new access list// Set the access-control information in the object's DACL.dwRes = SetNamedSecurityInfoEx(
folder, // name of the object
SE_FILE_OBJECT, // type of object
DACL_SECURITY_INFORMATION, // type of information to set
NULL, // name of provider
pNewAccessList, // new access list
NULL, // audit list
NULL, // name of owner
NULL, // name of group
NULL); // pointer to OVERLAPPED structure// Free the returned buffers.if (pOldAccessList)
LocalFree(pOldAccessList);
if (pNewAccessList)
LocalFree(pNewAccessList);
}
解决方案 »
- 我在基于对话框的MFC程序中,设置了一个static控件,想用来显示资源中的bitmap,并且在oninitialdlg中添加了代码,编译通过了,但总是debug中出问题,请大家看看
- 三种状态的checkBox,使用SetWindowLong后,变成GroupBox了...
- 关于数据访问,急!
- 如何在VC++中加载WORD的一个模板?急!
- 请问:在MFC中如何使用数学函数??
- 关于Windows 2000 下的低级键盘钩子函数,请教各位大侠了!^_^
- 为什么视图刷新,显示不完全?
- ShellExecuteEx 问题请教
- 怎样在对话框中显示对话框?
- 有多个对话框,如何让每个对话框重复调用时只显示一次。
- 怎么让对话框里的控件随着对话框的大小变化而变化
- 有好项目 可以与本人联系 QQ:82865 本人有大量资金
Client Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0.
Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Header Declared in Aclapi.h.
Library Link to Advapi32.lib.
DLL Requires Advapi32.dll.
Unicode Implemented as GetNamedSecurityInfoW (Unicode) and GetNamedSecurityInfoA (ANSI).