3

我这样做了:

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    HKEY CH;

    if(RegCreateKey(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&CH) != 0)
    {
        printf("Erro - RegCreateKey\n");
        system("PAUSE");
        return -1;
   }
    if(RegOpenKey(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&CH) != 0) // Abre a CH "Minha CH"
    {
        printf("Erro - RegOpenKey\n");
        system("PAUSE");
        return -1;
    }
    if(RegSetValueEx(CH,L"PROC",0,REG_SZ,(LPBYTE) L"C:\\pasta1\\pasta2\\txt.txt",200) != 0)
        printf("Erro - RegSetValue\n");
    RegCloseKey(CH);
    printf("\nsucesso !\n");
    system("PAUSE");
    return 0;
     system("PAUSE");
}

现在我想做:

 if(key already exist) {
            //don't make nothing 
} else
     Create key
      ... 

我需要做什么功能?因为如果没有,我将创建一个已经存在的密钥。如果我能避免,那就太好了。

4

1 回答 1

1

使用RegCreateKeyEx. 如果它已经存在,它会打开密钥,如果不存在则创建它。lpdwDisposition参数告诉您这两种效果中的哪一种实际发生了。例如:

DWORD disposition = 0;
RegCreateKeyEx(..., &disposition);
if (disposition == REG_CREATED_NEW_KEY) {
    /* new key was created */
} else {
    /* existing key was opened */
} 
于 2013-10-25T01:04:06.527 回答