1

起動するプログラムを追加しています:

TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL,szPath,MAX_PATH);
HKEY newValue;
RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&newValue);
RegSetValueEx(newValue,"myprogram",0,REG_SZ,(LPBYTE)szPath,sizeof(szPath));
RegCloseKey(newValue);
return 0;

そして、キーが存在しないかどうかを確認してから作成したかったのです。私のコードでは何か他のことが奇妙です。キーのレジストリをチェックしました。データ列にアプリケーションパス + "..." (.exe の後) が表示され、ダブルクリックしてデータをチェックすると、ポップアップが開き、大丈夫です.exeではなく.exeのみです...

助けてくれてありがとう:)

4

4 に答える 4

1

レジストリ関数の出力を確認できます....

ここで私はあなたがそれを使うことができるアイデアを与えています...

bool function()
{ 
    HKEY hKey;
    LPCTSTR subKey;
    LPCTSTR subValue;
    HKEY resKey;
    DWORD dataLen;
    hKey = HKEY_LOCAL_MACHINE;
    subKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

    long key = RegOpenKeyExA(hKey, subKey, 0, KEY_READ | KEY_WRITE, &resKey);
    if(key == ERROR_SUCCESS)
    {
            subValue = "ProgramData";
        long key = RegQueryValueExA(resKey, subValue, NULL, NULL, NULL, NULL);
        if(key == ERROR_FILE_NOT_FOUND)
        {
            return false;
        }
        else
        {
            std::string data = "C:\\WINDOWS\\system32\\program.exe";
            DWORD dataLen = data.size()+1;

            long key = RegSetValueExA(resKey, subValue, 0, REG_SZ, (const BYTE*)data.c_str(), dataLen);
            if(key == ERROR_SUCCESS)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }
}
于 2013-04-08T07:05:42.643 に答える
0

を使用RegCreateKeyEx()して、新しいキーを作成するか、既存のキーを開くことができます。

表示される "..."RegEditは、列の幅が十分でないためです。列ヘッダーの末尾をダブルクリックして、列のサイズを変更します。

于 2013-04-08T06:15:38.093 に答える
0

MSDN で提案されていることをお勧めします: または を使用してキーのサブキー/値を列挙し、キーがリストされているかどうRegEnumKey(Ex)()かを確認する必要がありますRegEnumValue()

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724861%28v=vs.85%29.aspxを参照してください。

およびhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms724256%28v=vs.85%29.aspxの例を参照してください。

お役に立てれば。

于 2013-04-09T22:04:35.893 に答える