服务中打开当前登录用户注册表项方法
2016-07-19 13:22
267 查看
dwExpPid表示Explorer.exe的进程ID号
// 打开进程
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwExpPid);
if(NULL == hProcess)
break;
//获取进程的Token
OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE, &hToken);
if(hToken == NULL)
break;
// 模拟当前登录用户
ImpersonateLoggedOnUser(hToken);
bNeedRevert = TRUE;
// 打开注册表
if(ERROR_SUCCESS != RegOpenCurrentUser(KEY_WRITE, &hKey))
break;
//打开注册表
if(ERROR_SUCCESS != RegOpenKeyExW(hKey, L"Software\\Microsoft\\Internet Explorer\\Main",
0, KEY_WRITE | KEY_WOW64_32KEY, &hSubKey))
break;
// 结束当前模拟登录令牌
RevertToSelf();
// 打开进程
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwExpPid);
if(NULL == hProcess)
break;
//获取进程的Token
OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE, &hToken);
if(hToken == NULL)
break;
// 模拟当前登录用户
ImpersonateLoggedOnUser(hToken);
bNeedRevert = TRUE;
// 打开注册表
if(ERROR_SUCCESS != RegOpenCurrentUser(KEY_WRITE, &hKey))
break;
//打开注册表
if(ERROR_SUCCESS != RegOpenKeyExW(hKey, L"Software\\Microsoft\\Internet Explorer\\Main",
0, KEY_WRITE | KEY_WOW64_32KEY, &hSubKey))
break;
// 结束当前模拟登录令牌
RevertToSelf();
相关文章推荐
- Android开发技术周报 Issue#72
- Android开发技术周报 Issue#73
- Python时间和日期学习
- 【转载】cocos2dx 3.x 声音播放、音量调节
- IOS学习笔记-UITableView绑定数据实例
- IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
- Android开发技术周报 Issue#74
- LeetCode Implement strStr()
- vs2010,重载windowProc,编写控件消息响应函数
- 远程连接mysql 授权方法教程
- Dagger2 彻底了解如何构建依赖关系
- C# 让程序自动以管理员身份运行
- Java 栈与堆简介
- Android开发技术周报 Issue#75
- 数组的静态分配和动态分配 内存分配问题
- C++—航班查询系统
- Android开发技术周报 Issue#76
- Android开发技术周报 Issue#77
- mysql字段类型的选择原则
- 使用svn管理代码删除文件删除报红色警告问题