7 void GetAutostartEntriesFromRegistry ( HKEY hRootKey
, TCHAR
* KeyName
);
10 StartupPageWndProc(HWND hDlg
, UINT message
, WPARAM wParam
, LPARAM lParam
)
19 hStartupListCtrl
= GetDlgItem(hDlg
, IDC_STARTUP_LIST
);
20 hStartupDialog
= hDlg
;
22 dwStyle
= SendMessage(hStartupListCtrl
, LVM_GETEXTENDEDLISTVIEWSTYLE
, 0, 0);
23 dwStyle
= dwStyle
| LVS_EX_FULLROWSELECT
| LVS_EX_CHECKBOXES
;
24 SendMessage(hStartupListCtrl
, LVM_SETEXTENDEDLISTVIEWSTYLE
, 0, dwStyle
);
26 SetWindowPos(hDlg
, NULL
, 10, 32, 0, 0, SWP_NOACTIVATE
| SWP_NOOWNERZORDER
| SWP_NOSIZE
| SWP_NOZORDER
);
28 // Initialize the application page's controls
29 column
.mask
= LVCF_TEXT
| LVCF_WIDTH
;
31 LoadString(hInst
, IDS_STARTUP_COLUMN_ELEMENT
, szTemp
, 256);
32 column
.pszText
= szTemp
;
34 ListView_InsertColumn(hStartupListCtrl
, 0, &column
);
36 column
.mask
= LVCF_TEXT
| LVCF_WIDTH
;
37 LoadString(hInst
, IDS_STARTUP_COLUMN_CMD
, szTemp
, 256);
38 column
.pszText
= szTemp
;
40 ListView_InsertColumn(hStartupListCtrl
, 1, &column
);
42 column
.mask
= LVCF_TEXT
| LVCF_WIDTH
;
43 LoadString(hInst
, IDS_STARTUP_COLUMN_PATH
, szTemp
, 256);
44 column
.pszText
= szTemp
;
46 ListView_InsertColumn(hStartupListCtrl
, 2, &column
);
48 GetAutostartEntriesFromRegistry(HKEY_LOCAL_MACHINE
, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
49 GetAutostartEntriesFromRegistry(HKEY_CURRENT_USER
, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
50 //FIXME: What about HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
51 //FIXME: Common Startup (startmenu)
60 GetAutostartEntriesFromRegistry ( HKEY hRootKey
, TCHAR
* KeyName
)
63 DWORD Index
, dwValues
, retVal
, dwType
;
64 DWORD dwValueLength
, dwDataLength
= MAX_VALUE_NAME
;
65 TCHAR Data
[MAX_VALUE_NAME
];
66 TCHAR lpValueName
[MAX_KEY_LENGTH
];
67 TCHAR Path
[MAX_KEY_LENGTH
+ 5];
70 if (RegOpenKeyEx(hRootKey
, KeyName
, 0, KEY_READ
, &hKey
) == ERROR_SUCCESS
)
72 if (RegQueryInfoKey(hKey
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, &dwValues
, NULL
, NULL
, NULL
, NULL
) == ERROR_SUCCESS
)
74 for (Index
= 0, retVal
= ERROR_SUCCESS
; Index
< dwValues
; Index
++)
76 dwValueLength
= MAX_VALUE_NAME
;
77 dwDataLength
= MAX_VALUE_NAME
;
78 retVal
= RegEnumValue(hKey
, Index
, lpValueName
, &dwValueLength
, NULL
, &dwType
, (LPBYTE
)Data
, &dwDataLength
);
79 if (retVal
== ERROR_SUCCESS
)
81 memset(&item
, 0, sizeof(LV_ITEM
));
82 item
.mask
= LVIF_TEXT
;
84 item
.pszText
= lpValueName
;
85 item
.iItem
= ListView_GetItemCount(hStartupListCtrl
);
87 ListView_InsertItem(hStartupListCtrl
, &item
);
91 GetLongPathName(Data
, Data
, sizeof(Data
));
94 SendMessage(hStartupListCtrl
, LVM_SETITEMTEXT
, item
.iItem
, (LPARAM
) &item
);
97 if (hRootKey
== HKEY_LOCAL_MACHINE
)
98 _tcscpy(Path
, _T("HKLM\\"));
99 if (hRootKey
== HKEY_CURRENT_USER
)
100 _tcscpy(Path
, _T("HKCU\\"));
102 _tcscat(Path
, KeyName
);
105 SendMessage(hStartupListCtrl
, LVM_SETITEMTEXT
, item
.iItem
, (LPARAM
) &item
);