打开键视窗 7.

OpenKey Windows 7

本文关键字:      更新时间:2023-10-16

这里有什么问题?在我的笔记本上工作,但不在我的电脑上工作。两者都是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位窗口。

相关文章:
  • 没有找到相关文章