使用RegSetValueEx修改注册表时遇到的问题(转)
原文转自 http://blog.csdn.net/tracyzhongcf/article/details/4076870
1、今天在使用RegSetValueEx时发现一个问题:
RegSetValueEx(hKey, TEXT("test"), 0, REG_SZ, (LPBYTE)TEXT("test.dll"), 256);
向注册表的某位置写了一个test,键值为test.dll
程序运行时,按理说会自动去加载我的test.dll。(因为我手动去修改机器上的注册表,添加此注册表项时,确实是能让系统加载test.dll了)。但是结果却是通过程序向注册表去写时,注册表确实写上了,可是系统没有加载我的dll。
原因:
256!!!
把程序改成:
TCHAR szTest[32];
wcsncpy(szTest, TEXT("test.dll"), 32);
int iLen = wcslen(szTest);
RegSetValueEx(hKey, TEXT("test"), 0, REG_SZ, (LPBYTE)szTest, sizeof(TCHAR)*iLen );
就可以了。
我们看一下RegSetValueEx中的参数:
LONG RegSetValueEx(
HKEY hKey,
LPCWSTR lpValueName,
DWORD Reserved,
DWORD dwType,
const BYTE* lpData,
DWORD cbData
);
cbData不能太大,否则很可能把lpData指向的内容之外的其他字符也写入注册表中。导致错误发生。
2、在我的项目中修改注册表后,界面上看起来修改成功了,但实际上未生效,重启电脑才生效,不知道为什么?
TCHAR value[];
memset(value, , sizeof(value));
wcsncpy(value, TEXT("zh-CN"), );
int iLen = wcslen(value);
LONG ret = RegSetValueEx(hk, TEXT("LocaleName"),
NULL,
REG_SZ,
(const BYTE*)value, sizeof(TCHAR)*iLen
);
if (ret != ERROR_SUCCESS)
{
MSG_LOG("RegSetValueEx 失败");
} memset(value, , sizeof(value));
wcsncpy(value, TEXT(""), );
iLen = wcslen(value);
ret = RegSetValueEx(hk, TEXT("Locale"),
NULL,
REG_SZ,
(const BYTE*)value, sizeof(TCHAR)*iLen
);
if (ret != ERROR_SUCCESS)
{
MSG_LOG("RegSetValueEx 失败");
}
使用RegSetValueEx修改注册表时遇到的问题(转)的更多相关文章
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- windows文件关联、打开方式列表之修改注册表攻略
这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...
- 通过cmd修改注册表并设置cmd窗口的大小
设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 【VS调试】C#读写Windows 7注册表时抛出“不允许所请求的注册表访问权”的解决办法
原文:[VS调试]C#读写Windows 7注册表时抛出"不允许所请求的注册表访问权"的解决办法 项目 - 属性 - 安全性,"使用ClickOnce",修改a ...
- C# .NET修改注册表
c#修改注册表,需要引用Microsoft.Win32命名空间 using Microsoft.Win32; //声明 ///引用 RegistryKey reg; reg = Registry.Cl ...
- Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表
问题起因 笔者自己在阿里云上搞服务器,有一台 Windows Server 必须通过远程桌面连接来管理,由于没能完全关掉 Win10 自带的烦人的系统更新,导致昨天安装完更新后出现了连接远程桌面时“要 ...
- JavaScript修改注册表
JavaScript修改注册表 2009-04-14 11:22:13| 分类: JS相关 | 标签: |字号大中小 订阅 注册表有关安全设置项的说明: 注册表路径: HKEY_CURRE ...
- C#修改注册表
某次需要使用C#对注册表进行操作,不过却发现没有权限,研究了以下发现是当前系统用户的问题.除非当前系统用户是Administrator,否则就会给你抛出一个异常.后来在网上发现了一个方法,原来C#也可 ...
随机推荐
- Qt——容器类(译)
注:本文是我对Qt官方文档的翻译,错误之处还请指正. 原文链接:Container Classes 介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变 ...
- BZOJ5291 BJOI2018链上二次求和(线段树)
用线段树对每种长度的区间维护权值和. 考虑区间[l,r]+1对长度为k的区间的贡献,显然其为Σk-max(0,k-i)-max(0,k-(n-i+1)) (i=l~r). 大力展开讨论.首先变成Σk- ...
- BZOJ3142 HNOI2013数列(组合数学)
考虑差分序列.每个差分序列的贡献是n-差分序列的和,即枚举首项.将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和.显然每一个数出现次数是相同的,所以c ...
- P3850 [TJOI2007]书架
题目描述 Knuth先生家里有个精致的书架,书架上有N本书,如今他想学到更多的知识,于是又买来了M本不同的新书.现在他要把新买的书依次插入到书架中,他已经把每本书要插入的位置标记好了,并且相应的将它们 ...
- 【poj3016】 K-Monotonic
http://poj.org/problem?id=3016 (题目链接) 题意 给出一个数列,将一个数${a_i}$更改为${b_i}$的代价为${|a_i-b_i|}$.求将数列改为不递减的最小代 ...
- 解题:POI 2012 Well
题面 比较明显地能看出二分来,但是检查函数很难写.对于二分出的一个$mid$,我们要让它满足在$m$次操作内令序列中存在一个为零的位置,同时使得任意相邻的两项之差不超过$mid$ 第二项的检查比较好做 ...
- P4711 「化学」相对分子质量
P4711 「化学」相对分子质量 给你一个字符串让你输出相对分子质量(弱智字符串模拟) 我比赛tm调了两个半小时啊QAQ 希望以后能增加代码力吧,纪念挂代码 Code #include<iost ...
- 转:iOS7导航栏遮盖问题的解决
在开发iOS7的界面的时候,有时候你会发现UIViewController里的subView有时会被导航栏遮盖,原因是iOS7鼓励全屏布局,UIViewController中的self.view的坐标 ...
- hdu1286 找新朋友
找新朋友 http://acm.hdu.edu.cn/showproblem.php?pid=1286 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Java并发编程原理与实战五:创建线程的多种方式
一.继承Thread类 public class Demo1 extends Thread { public Demo1(String name) { super(name); } @Override ...