void Advanced_OnStartup (HWND hDlg)
{
- g.fStartup = IsDlgButtonChecked (hDlg, IDC_STARTUP);
+ BOOL bSuccess = FALSE;
+ g.fStartup = IsDlgButtonChecked (hDlg, IDC_STARTUP);
- HKEY hk;
- if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT(AFSREG_CLT_SVC_PARAM_SUBKEY), 0, NULL, 0,
- (IsWow64()?KEY_WOW64_64KEY:0)|KEY_WRITE, NULL, &hk, NULL) == 0)
- {
- DWORD dwSize = sizeof(g.fStartup);
- DWORD dwType = REG_DWORD;
- RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
- RegCloseKey (hk);
- }
+ HKEY hk;
+ if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT(AFSREG_CLT_SVC_PARAM_SUBKEY), 0, NULL, 0,
+ (IsWow64()?KEY_WOW64_64KEY:0)|KEY_WRITE, NULL, &hk, NULL) == 0)
+ {
+ DWORD dwSize = sizeof(g.fStartup);
+ DWORD dwType = REG_DWORD;
+ RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
+ RegCloseKey (hk);
- Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
+ bSuccess = Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
+ }
+
+ if (!bSuccess) {
+ // Reset the state
+ g.fStartup = !g.fStartup;
+ CheckDlgButton(hDlg, IDC_STARTUP, g.fStartup);
+
+ // Report error to user
+ Message (MB_OK | MB_ICONHAND, IDS_STARTUP_CHANGE_TITLE, IDS_STARTUP_CHANGE_ERROR);
+ }
}
IDS_BADSUB_DESC "The drive letter description you entered cannot be used.\n\nA drive letter description may have no more than 12 characters, and may not contain spaces or tabs."
IDS_TITLE_95 "AFS Light"
IDS_CREDS_EXPIRED "%1 (expired)"
+ IDS_STARTUP_CHANGE_TITLE "Error - Startup Setting"
+ IDS_STARTUP_CHANGE_ERROR "Unable to change startup state.\nPermission denied."
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
fUninstall = TRUE;
break;
- case ':':
+ case ':':
CopyAnsiToString(g.SmbName,pszCmdLineA);
MapShareName(pszCmdLineA);
break;
else if (fUninstall)
Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup = FALSE);
- if (fInstall)
+ if (fInstall || fUninstall)
{
HKEY hk;
if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, 0, NULL, 0,
#define IDS_BADSUB_DESC 49
#define IDS_TITLE_95 50
#define IDS_CREDS_EXPIRED 51
+#define IDS_STARTUP_CHANGE_TITLE 52
+#define IDS_STARTUP_CHANGE_ERROR 53
#define IDI_MAIN 100
#define IDD_MAIN 101
}
-void Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart)
+BOOL Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart)
{
TCHAR szShortcut[ MAX_PATH + 10 ] = TEXT("");
+ BOOL bSuccess;
HKEY hk;
if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"), &hk) == 0)
RegCloseKey (hk);
}
}
- Shortcut_Create (szShortcut, szSource, "Autostart Authentication Agent", szParams);
+ bSuccess = Shortcut_Create (szShortcut, szSource, "Autostart Authentication Agent", szParams);
}
else // (!g.fAutoStart)
{
- DeleteFile (szShortcut);
+ bSuccess = DeleteFile (szShortcut);
}
+
+ return bSuccess;
}
void Shortcut_Init (void);
void Shortcut_Exit (void);
BOOL Shortcut_Create (LPTSTR pszTarget, LPCTSTR pszSource, LPTSTR pszDesc = NULL, LPTSTR pszArgs = NULL);
-void Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart);
+BOOL Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart);
#endif