System 权限如何访问当前用户注册表
2011-04-24 13:27
387 查看
鉴于很多人问我这个问题,我已经很久不写blog, 但是无奈今天再啰嗦一下,
如果是是system 权限,那么请按照如下思路进行:
1. 获得当前用户的token, WTG 函数, explorer 上剥离 都行。
2. 获得当前用户的SID
3. 将SID转换成字符串,
4. 使用HKEY_USER 和用户字符串进行读写当前用户下的键值,因为注册表当前用户仅仅是HKEy_USERS 下的一个映射。
如下简单附带代码:
如果是是system 权限,那么请按照如下思路进行:
1. 获得当前用户的token, WTG 函数, explorer 上剥离 都行。
2. 获得当前用户的SID
3. 将SID转换成字符串,
4. 使用HKEY_USER 和用户字符串进行读写当前用户下的键值,因为注册表当前用户仅仅是HKEy_USERS 下的一个映射。
如下简单附带代码:
]int _SetCurrentUserReg( LPCTSTR lpszPath, LPCTSTR lpszKey, LPCTSTR lpszValue ) { DWORD dwSesssionID = WTSGetActiveConsoleSessionId(); HANDLE hUserToken = NULL; BOOL bIsOK = WTSQueryUserToken( dwSesssionID, &hUserToken ); if ( bIsOK ) { DWORD dwLength = 0; bIsOK = GetTokenInformation( hUserToken, TokenUser, NULL, 0, &dwLength ); TOKEN_USER *pUser = static_cast<TOKEN_USER*>(malloc( dwLength + 1 )); if ( NULL == pUser ) { return -1; } bIsOK = GetTokenInformation( hUserToken, TokenUser, pUser, dwLength, &dwLength ); if ( !bIsOK ) { free(pUser); return -1; } LPWSTR lpUserToken = NULL; bIsOK = ConvertSidToStringSid( pUser->User.Sid, &lpUserToken ); free(pUser); if ( !bIsOK ) { return -1; } //HKEY_USERS/S-1-5-21-362780079-2926010819-742269287-1000 CString strPath = _T("%s//%s"); CRegKey theReg; CString strReg; strReg.Format( strPath.GetBuffer(), lpUserToken, lpszPath ); LocalFree( lpUserToken ); LONG lRetCode = theReg.Open( HKEY_USERS, strReg.GetBuffer() ); if ( lRetCode != 0 ) { return -1; } lRetCode = theReg.SetStringValue( lpszKey, lpszValue ); if ( lRetCode != 0 ) { return -1; } lRetCode = theReg.Close(); if ( lRetCode != 0 ) { return -1; } return 0; } return -1; }
相关文章推荐
- windows下服务或SYSTEM权限读取当前用户注册表HKEY_CURRENT_USER
- XP中如何解决备份文件夹拒绝访问问题(也可解决普通用户访问管理员用户的文件的权限问题)
- 金蝶K3,域环境中,无本地用户管理员权限的域用户如何设置注册表权限?
- Win7如何隐藏共享文件夹、怎样隐藏用户没有权限访问的共享文件夹
- ubuntu 如何修改当前用户名 添加用户 修改权限
- 11.16 如何验证当前用户是否具有指定的功能权限?
- sharepoint 2016 学习系列篇(7)-如何给网站分配用户访问权限site permission for users
- 如何在Linux下设置访问控制列表(ACL)来控制用户的权限
- js如何获取当前用户访问的ip地址以及城市地区?
- SpringSecurity实战! 详细讲解如何通过SpringSecurity控制用户访问权限。
- Oracle12 安装:请确保当前用户具有访问临时文件的权限
- Android用户apk如何获得系统(system)权限
- 服务应用程序如何访问当前登录用户的信息
- 在SYSTEM权限下以当前用户权限运行程序
- 安装数据库提示"请确保当前用户具有访问临时文件的权限"解决方法
- SharePoint【用户访问控制】-- sharepoint 判断当前用户在当前页面是否有某项权限
- moss中判断当前用户是否有访问某web的权限
- VC++中如何判断当前用户是否具有管理员权限
- 当以普通用户访问文件夹出现小锁图标即当前用户没有完全访问权限解决方案
- Oracle数据库如何查看当前用户角色权限及默认表空间