createfile 无权限_访问被拒绝CreateFileMapping在不同的用户帐户下运行时用runas

操作系统:WinXP SP3,没有快速的用户切换。

以下代码使用runas在2个不同的用户帐户上运行。

这两个用户都有管理员权限。

测试代码:

SECURITY_DESCRIPTOR sd;

if(!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))

printf("InitializeSecurityDescriptor failed %d\n", GetLastError());

if(!SetSecurityDescriptorDacl(&sd, true, 0, false))

printf("SetSecurityDescriptorDacl failed %d\n", GetLastError());

SECURITY_ATTRIBUTES sa;

sa.nLength = sizeof(sa);

sa.lpSecurityDescriptor = &sd;

sa.bInheritHandle = false;

HANDLE hMap = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, 0x1000, "Global\\MyMap");

void* pMap = 0;

if(hMap) {

pMap = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0x1000);

} else {

printf("CreateFileMapping failed: %d\n", GetLastError());

hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, false, "Global\\MyMap");

if(hMap) {

printf("OpenFileMapping sucess!\n");

} else {

printf("OpenFileMapping failed: %d\n", GetLastError());

}

}

if(pMap) {

printf("Sucess!\n");

printf("DW: %X", *(DWORD*)pMap);

*(DWORD*)pMap = 0xDEADBEEF;

} else {

printf("MapViewOfFile failed: %d\n", GetLastError());

}

cin.ignore();

if(pMap)

UnmapViewOfFile(pMap);

if(hMap)

CloseHandle(hMap);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值