0

値とそれに対応する値を Windows レジストリ キーに挿入する小さなプログラムを作成しました。

プログラムは正常に動作していますが、値とそれに対応する値を挿入していません。

管理者として prog を実行すると、RegSetValueEx() が失敗します。ただし、データではなく値のみを挿入します。

ここで問題を見つけるのを手伝ってください。

私のコードは次のとおりです..

#define WIN32_LEAN_AND_MEAN
#define WIN32_DEFAULT_LIBS
#ifndef _WIN32_WINNT
#define _WIN32_WINNT (0x0601)
#endif  /* _WIN32_WINNT */
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <tchar.h>
#include <unistd.h>
#include <stdbool.h>

#include<string.h>

    BOOL InstallRunOnStartup()
    {
      HKEY key;

      long result;
      BOOL ret = FALSE;
      LPTSTR val=L"12as3d12";
        LPTSTR a=L"zzz";

      TCHAR szBuf[20];


      result = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, KEY_WRITE | KEY_WOW64_64KEY | KEY_SET_VALUE , &key);
      if (result == ERROR_SUCCESS)
      {

        printf("hi \n");
          if (RegSetValueEx(key, a, 0, REG_SZ,(LPBYTE)val, (DWORD)(lstrlen(val)+1) == ERROR_SUCCESS)){
            printf("success \n");
            ret = TRUE;
          }
            RegCloseKey(key);
      }
      return ret;
    }




    int main()
    {
        InstallRunOnStartup();
        getch();
    }
4

3 に答える 3