打开键视窗 7.
OpenKey Windows 7
这里有什么问题?在我的笔记本上工作,但不在我的电脑上工作。两者都是64位,Windows 7终极版。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
HKEY CH;
char File_Name[] = "C:\Users\RMS\Desktop\M.txt";
if(RegCreateKey(HKEY_LOCAL_MACHINE, L"Software\Microsoft\Windows\CurrentVersion\Run",&CH) != 0){
printf("Erro - RegCreateKeyn");
system("PAUSE");
return -1;
}
if(RegOpenKey(HKEY_LOCAL_MACHINE, L"Software\Microsoft\Windows\CurrentVersion\Run",&CH) != 0) // Abre a CH "Minha CH"
{
printf("Erro - RegOpenKeyn");
system("PAUSE");
return -1;
}
if(RegSetValueEx(CH,L"My_Value",0,REG_SZ,(LPBYTE) L"C:\Users\RMS\Desktop\M.txt",40) != 0)
printf("Erro - RegSetValuen");
RegCloseKey(CH);
printf("nsucesso !n");
system("PAUSE");
return 0;
}
我发现。。。只做这个:
if(RegSetValueEx(CH,L"My_Value",0,REG_SZ,(LPBYTE) L"C:\Users\RMS\Desktop\M.txt",60) != 0)
非常感谢大家!
您的问题是 HKLM
注册表项只能由提升的程序写入,并且您的程序未以提升方式运行。它在一台机器上而不是另一台机器上的原因是一台计算机关闭/关闭了用户访问控制,而另一台则没有。
如果从提升的命令提示符运行程序,它将起作用。
此外,您对字符串使用 L""
,但使用 40 的 RegSetValueEx
调用,即 40 个字节,实际上会切断您正在设置的文本的M.txt
(如果它有效的话)。在初始化.txt
文件的位置,应使用:
TCHAR File_Name[] = L"C:\Users\RMS\Desktop\M.txt";
然后,对于RegSetValueEx,您可以执行以下操作:
RegSetValueEx(CH,L"My_Value",0,REG_SZ,(LPBYTE) File_Name, sizeof File_Name + sizeof(TCHAR))
这使它成为与文件名对应的字节数加上最终的 NULL TCHAR。
你得到什么错误?
尝试
RegOpenKeyEx
而不是RegOpenKey,因为它适用于16位窗口。
相关文章:
- 没有找到相关文章