2013-02-21 161 views
-1

我在我的CPP代碼中添加了當前程序啓動時的以下內容。我試圖修改代碼來爲啓動添加一個不同的程序,比如說我想添加一個密鑰,以便在啓動時運行「C:\ mytime.exe」。你能幫我修改代碼嗎?C++添加註冊表項

TCHAR szPath[MAX_PATH]; 
DWORD pathLen = 0; 

pathLen = GetModuleFileName(NULL, szPath, MAX_PATH); 
if (pathLen == 0) 
{ 
    return -1; 
} 
HKEY newValue; 
if (RegOpenKey(HKEY_CURRENT_USER, 
    TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 
    &newValue) != ERROR_SUCCESS) 
{ 
    return -1; 
} 
DWORD pathLenInBytes = pathLen * sizeof(*szPath); 
if (RegSetValueEx(newValue, 
    TEXT("My Program"), 
    0, 
    REG_SZ, 
    (LPBYTE)szPath, 
    pathLenInBytes) != ERROR_SUCCESS) 
{ 
    RegCloseKey(newValue); 
    return -1; 
} 
RegCloseKey(newValue); 
return TRUE; 
+3

你有什麼實際試過?這段代碼是否工作? – slugonamission 2013-02-21 18:04:12

+0

你爲什麼不縮進任何東西? – 2013-02-21 18:06:54

+0

您的應用程序是否具有更改該特定註冊表項所需的權限? – 2013-02-21 18:26:44

回答

1

只需更換此塊的代碼:

pathLen = GetModuleFileName(NULL, szPath, MAX_PATH); 
if (pathLen == 0) 
{ 
    return -1; 
} 

有了這個:

/* of course, use your own executable - make sure to not overflow the buffer! */ 
_tcscpy(szPath, _T("C:\\stackoverflow.exe")); 
pathLen = _tcslen(szPath); 
+0

謝謝Nik!這正是我所要求的。 – Drek 2013-02-21 18:53:30