diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp new file mode 100644 index 0000000000..b2daa50739 --- /dev/null +++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.cpp @@ -0,0 +1,155 @@ +// Berkeley Open Infrastructure for Network Computing +// http://boinc.berkeley.edu +// Copyright (C) 2014 University of California +// +// This is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// To view the GNU Lesser General Public License visit +// http://www.gnu.org/copyleft/lesser.html +// or write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// + +#include "stdafx.h" +#include "boinccas.h" +#include "CADeleteBOINCAccounts.h" +#include "lsaprivs.h" +#include "password.h" + + +#define CUSTOMACTION_NAME _T("CADeleteBOINCAccounts") +#define CUSTOMACTION_PROGRESSTITLE _T("Validating user accounts used by BOINC for secure sandboxes") + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +CADeleteBOINCAccounts::CADeleteBOINCAccounts(MSIHANDLE hMSIHandle) : + BOINCCABase(hMSIHandle, CUSTOMACTION_NAME, CUSTOMACTION_PROGRESSTITLE) +{} + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +CADeleteBOINCAccounts::~CADeleteBOINCAccounts() +{ + BOINCCABase::~BOINCCABase(); +} + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +UINT CADeleteBOINCAccounts::OnExecution() +{ + tstring strBOINCMasterAccountUsername; + tstring strBOINCProjectAccountUsername; + NET_API_STATUS nasReturnValue; + UINT uiReturnValue = -1; + + uiReturnValue = GetProperty( _T("BOINC_MASTER_USERNAME"), strBOINCMasterAccountUsername ); + if ( uiReturnValue ) return uiReturnValue; + + uiReturnValue = GetProperty( _T("BOINC_PROJECT_USERNAME"), strBOINCProjectAccountUsername ); + if ( uiReturnValue ) return uiReturnValue; + + + // Delete 'boinc_master' account + // + nasReturnValue = NetUserDel( + NULL, + (LPWSTR)strBOINCMasterAccountUsername.c_str() + ); + + if (NERR_Success != nasReturnValue) { + LogMessage( + INSTALLMESSAGE_INFO, + NULL, + NULL, + NULL, + nasReturnValue, + _T("NetUserDel retval") + ); + LogMessage( + INSTALLMESSAGE_ERROR, + NULL, + NULL, + NULL, + nasReturnValue, + _T("Failed to delete the 'boinc_master' account.") + ); + return ERROR_INSTALL_FAILURE; + } + + + // Delete 'boinc_project' account + // + nasReturnValue = NetUserDel( + NULL, + (LPWSTR)strBOINCProjectAccountUsername.c_str() + ); + + if (NERR_Success != nasReturnValue) { + LogMessage( + INSTALLMESSAGE_INFO, + NULL, + NULL, + NULL, + nasReturnValue, + _T("NetUserDel retval") + ); + LogMessage( + INSTALLMESSAGE_ERROR, + NULL, + NULL, + NULL, + nasReturnValue, + _T("Failed to delete the 'boinc_project' account.") + ); + return ERROR_INSTALL_FAILURE; + } + + return ERROR_SUCCESS; +} + + +///////////////////////////////////////////////////////////////////// +// +// Function: DeleteBOINCAccounts +// +// Description: This custom action delete the two user accounts that +// are used to enfore the account based sandboxing scheme +// on Windows. +// +///////////////////////////////////////////////////////////////////// +UINT __stdcall DeleteBOINCAccounts(MSIHANDLE hInstall) +{ + UINT uiReturnValue = 0; + + CADeleteBOINCAccounts* pCA = new CADeleteBOINCAccounts(hInstall); + uiReturnValue = pCA->Execute(); + delete pCA; + + return uiReturnValue; +} diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.h b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.h new file mode 100644 index 0000000000..341d57a61a --- /dev/null +++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCAccounts.h @@ -0,0 +1,37 @@ +// Berkeley Open Infrastructure for Network Computing +// http://boinc.berkeley.edu +// Copyright (C) 2014 University of California +// +// This is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// To view the GNU Lesser General Public License visit +// http://www.gnu.org/copyleft/lesser.html +// or write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// + +#ifndef _CADELETEBOINCACCOUNTS_H_ +#define _CADELETEBOINCACCOUNTS_H_ + + +class CADeleteBOINCAccounts : public BOINCCABase +{ +public: + + CADeleteBOINCAccounts(MSIHANDLE hMSIHandle); + ~CADeleteBOINCAccounts(); + virtual UINT OnExecution(); + +}; + + +#endif + diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp new file mode 100644 index 0000000000..97a6c9d361 --- /dev/null +++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.cpp @@ -0,0 +1,170 @@ +// Berkeley Open Infrastructure for Network Computing +// http://boinc.berkeley.edu +// Copyright (C) 2014 University of California +// +// This is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// To view the GNU Lesser General Public License visit +// http://www.gnu.org/copyleft/lesser.html +// or write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + +#include "stdafx.h" +#include "boinccas.h" +#include "CADeleteBOINCGroups.h" +#include "lsaprivs.h" + + +#define CUSTOMACTION_NAME _T("CADeleteBOINCGroups") +#define CUSTOMACTION_PROGRESSTITLE _T("Validating user groups used by BOINC for secure sandboxes") + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +CADeleteBOINCGroups::CADeleteBOINCGroups(MSIHANDLE hMSIHandle) : + BOINCCABase(hMSIHandle, CUSTOMACTION_NAME, CUSTOMACTION_PROGRESSTITLE) +{} + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +CADeleteBOINCGroups::~CADeleteBOINCGroups() +{ + BOINCCABase::~BOINCCABase(); +} + + +///////////////////////////////////////////////////////////////////// +// +// Function: +// +// Description: +// +///////////////////////////////////////////////////////////////////// +UINT CADeleteBOINCGroups::OnExecution() +{ + NET_API_STATUS nasReturnValue; + + // Delete the 'boinc_admins' + // + nasReturnValue = NetLocalGroupDel( + NULL, + _T("boinc_admins") + ); + + if ((NERR_Success != nasReturnValue) && (ERROR_ALIAS_EXISTS != nasReturnValue)) { + LogMessage( + INSTALLMESSAGE_INFO, + NULL, + NULL, + NULL, + nasReturnValue, + _T("NetLocalGroupDel retval") + ); + LogMessage( + INSTALLMESSAGE_ERROR, + NULL, + NULL, + NULL, + nasReturnValue, + _T("Failed to delete the 'boinc_admins' group.") + ); + return ERROR_INSTALL_FAILURE; + } + + // Delete the 'boinc_users' + // + nasReturnValue = NetLocalGroupDel( + NULL, + _T("boinc_users") + ); + + if ((NERR_Success != nasReturnValue) && (ERROR_ALIAS_EXISTS != nasReturnValue)) { + LogMessage( + INSTALLMESSAGE_INFO, + NULL, + NULL, + NULL, + nasReturnValue, + _T("NetLocalGroupDel retval") + ); + LogMessage( + INSTALLMESSAGE_ERROR, + NULL, + NULL, + NULL, + nasReturnValue, + _T("Failed to Delete the 'boinc_users' group.") + ); + return ERROR_INSTALL_FAILURE; + } + + // Delete the 'boinc_projects' + // + nasReturnValue = NetLocalGroupDel( + NULL, + _T("boinc_projects") + ); + + if ((NERR_Success != nasReturnValue) && (ERROR_ALIAS_EXISTS != nasReturnValue)) { + LogMessage( + INSTALLMESSAGE_INFO, + NULL, + NULL, + NULL, + nasReturnValue, + _T("NetLocalGroupDel retval") + ); + LogMessage( + INSTALLMESSAGE_ERROR, + NULL, + NULL, + NULL, + nasReturnValue, + _T("Failed to remove the 'boinc_projects' group.") + ); + return ERROR_INSTALL_FAILURE; + } + + return ERROR_SUCCESS; +} + + +///////////////////////////////////////////////////////////////////// +// +// Function: DeleteBOINCGroups +// +// Description: This custom action deletes the three user groups that +// are used to enfore the account based sandboxing scheme +// on Windows. +// +///////////////////////////////////////////////////////////////////// +UINT __stdcall DeleteBOINCGroups(MSIHANDLE hInstall) +{ + UINT uiReturnValue = 0; + + CADeleteBOINCGroups* pCA = new CADeleteBOINCGroups(hInstall); + uiReturnValue = pCA->Execute(); + delete pCA; + + return uiReturnValue; +} diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.h b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.h new file mode 100644 index 0000000000..f41c7ec721 --- /dev/null +++ b/win_build/installerv2/redist/Windows/src/boinccas/CADeleteBOINCGroups.h @@ -0,0 +1,37 @@ +// Berkeley Open Infrastructure for Network Computing +// http://boinc.berkeley.edu +// Copyright (C) 2014 University of California +// +// This is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// To view the GNU Lesser General Public License visit +// http://www.gnu.org/copyleft/lesser.html +// or write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + +#ifndef _CADELETEBOINCGROUPS_H_ +#define _CADELETEBOINCGROUPS_H_ + + +class CADeleteBOINCGroups : public BOINCCABase +{ +public: + + CADeleteBOINCGroups(MSIHANDLE hMSIHandle); + ~CADeleteBOINCGroups(); + virtual UINT OnExecution(); + +}; + + +#endif + diff --git a/win_build/installerv2/redist/Windows/src/boinccas/CAGrantBOINCAdminsRights.cpp b/win_build/installerv2/redist/Windows/src/boinccas/CAGrantBOINCAdminsRights.cpp index 1197222fdc..e5192ef511 100644 --- a/win_build/installerv2/redist/Windows/src/boinccas/CAGrantBOINCAdminsRights.cpp +++ b/win_build/installerv2/redist/Windows/src/boinccas/CAGrantBOINCAdminsRights.cpp @@ -94,60 +94,20 @@ UINT CAGrantBOINCAdminsRights::OnExecution() // most cases. // User Rights - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeNetworkLogonRight' right.")); GrantUserRight(pSid, L"SeNetworkLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeRemoteInteractiveLogonRight' right.")); GrantUserRight(pSid, L"SeRemoteInteractiveLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeBatchLogonRight' right.")); GrantUserRight(pSid, L"SeBatchLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeInteractiveLogonRight' right.")); GrantUserRight(pSid, L"SeInteractiveLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeServiceLogonRight' right.")); GrantUserRight(pSid, L"SeServiceLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDenyNetworkLogonRight' right.")); GrantUserRight(pSid, L"SeDenyNetworkLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDenyInteractiveLogonRight' right.")); GrantUserRight(pSid, L"SeDenyInteractiveLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDenyBatchLogonRight' right.")); GrantUserRight(pSid, L"SeDenyBatchLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDenyServiceLogonRight' right.")); GrantUserRight(pSid, L"SeDenyServiceLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - // Windows 2000 and older does not have the SeDenyRemoteInteractiveLogonRight user right - // - if (strOSVersion > _T("500")) { - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDenyRemoteInteractiveLogonRight' right.")); - GrantUserRight(pSid, L"SeDenyRemoteInteractiveLogonRight", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - } + GrantUserRight(pSid, L"SeDenyRemoteInteractiveLogonRight", FALSE); // Privileges - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeTcbPrivilege' right.")); GrantUserRight(pSid, L"SeTcbPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeMachineAccountPrivilege' right.")); GrantUserRight(pSid, L"SeMachineAccountPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeIncreaseQuotaPrivilege' right.")); if (!GrantUserRight(pSid, L"SeIncreaseQuotaPrivilege", TRUE)) { LogMessage( @@ -159,13 +119,7 @@ UINT CAGrantBOINCAdminsRights::OnExecution() _T("Failed call to GrantUserRight - SeIncreaseQuotaPrivilege") ); } - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeBackupPrivilege' right.")); GrantUserRight(pSid, L"SeBackupPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeChangeNotifyPrivilege' right.")); if (!GrantUserRight(pSid, L"SeChangeNotifyPrivilege", TRUE)) { LogMessage( @@ -177,21 +131,9 @@ UINT CAGrantBOINCAdminsRights::OnExecution() _T("Failed call to GrantUserRight - SeChangeNotifyPrivilege") ); } - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeSystemTimePrivilege' right.")); GrantUserRight(pSid, L"SeSystemTimePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeCreateTokenPrivilege' right.")); GrantUserRight(pSid, L"SeCreateTokenPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeCreatePagefilePrivilege' right.")); GrantUserRight(pSid, L"SeCreatePagefilePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeCreateGlobalPrivilege' right.")); if (!GrantUserRight(pSid, L"SeCreateGlobalPrivilege", TRUE)) { LogMessage( @@ -203,65 +145,20 @@ UINT CAGrantBOINCAdminsRights::OnExecution() _T("Failed call to GrantUserRight - SeCreateGlobalPrivilege") ); } - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeDebugPrivilege' right.")); GrantUserRight(pSid, L"SeDebugPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeEnableDelegationPrivilege' right.")); GrantUserRight(pSid, L"SeEnableDelegationPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeRemoteShutdownPrivilege' right.")); GrantUserRight(pSid, L"SeRemoteShutdownPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeAuditPrivilege' right.")); GrantUserRight(pSid, L"SeAuditPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeImpersonatePrivilege' right.")); GrantUserRight(pSid, L"SeImpersonatePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeIncreaseBasePriorityPrivilege' right.")); GrantUserRight(pSid, L"SeIncreaseBasePriorityPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeLoadDriverPrivilege' right.")); GrantUserRight(pSid, L"SeLoadDriverPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeLockMemoryPrivilege' right.")); GrantUserRight(pSid, L"SeLockMemoryPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeSecurityPrivilege' right.")); GrantUserRight(pSid, L"SeSecurityPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeSystemEnvironmentPrivilege' right.")); GrantUserRight(pSid, L"SeSystemEnvironmentPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeManageVolumePrivilege' right.")); GrantUserRight(pSid, L"SeManageVolumePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeProfileSingleProcessPrivilege' right.")); GrantUserRight(pSid, L"SeProfileSingleProcessPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeSystemProfilePrivilege' right.")); GrantUserRight(pSid, L"SeSystemProfilePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeUndockPrivilege' right.")); GrantUserRight(pSid, L"SeUndockPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeAssignPrimaryTokenPrivilege' right.")); if (!GrantUserRight(pSid, L"SeAssignPrimaryTokenPrivilege", TRUE)) { LogMessage( @@ -273,24 +170,10 @@ UINT CAGrantBOINCAdminsRights::OnExecution() _T("Failed call to GrantUserRight - SeAssignPrimaryTokenPrivilege") ); } - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeRestorePrivilege' right.")); GrantUserRight(pSid, L"SeRestorePrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeShutdownPrivilege' right.")); GrantUserRight(pSid, L"SeShutdownPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeSynchAgentPrivilege' right.")); GrantUserRight(pSid, L"SeSynchAgentPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Checking the 'SeTakeOwnershipPrivilege' right.")); GrantUserRight(pSid, L"SeTakeOwnershipPrivilege", FALSE); - LogMessage(INSTALLMESSAGE_INFO, NULL, NULL, NULL, NULL, _T("Check completed.")); - } else { diff --git a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def index 0cac585a6c..f496c1db91 100644 --- a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def +++ b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.def @@ -47,3 +47,5 @@ EXPORTS RevokeBOINCProjectRights RevokeBOINCProjectsRights RevokeBOINCUsersRights + DeleteBOINCGroups + DeleteBOINCAccounts diff --git a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.vcxproj b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.vcxproj index 1a0c032311..a9574eddb8 100644 --- a/win_build/installerv2/redist/Windows/src/boinccas/boinccas.vcxproj +++ b/win_build/installerv2/redist/Windows/src/boinccas/boinccas.vcxproj @@ -214,6 +214,8 @@ + + @@ -274,6 +276,8 @@ + +