//------------------------------------------------------------------------- static void AddToExplorerContextMenu(bool bAdd) { stringT cmd = TEXT("reg "); if (bAdd) cmd += TEXT("ADD "); else cmd += TEXT("DELETE "); cmd += STR_HKCR_CTXMENU_BASE; if (bAdd) cmd += STR_HKCR_CTXMENU_CMD; cmd += TEXT("\" /f "); if (bAdd) { cmd += TEXT("/ve /t REG_SZ /d \"\\\""); cmd += AppName; cmd += TEXT("\\\" %%1\""); } cmd += STR_NEWLINE; cmd += STR_CMD_PAUSE; SetCommandWindowText(cmd.c_str()); }
//------------------------------------------------------------------------- void ResetPermissionDialog::BackRestorePermissions(bool bBackup) { // Browse for permission backup file stringT PermsFile; if (!ResetPermissionDialog::BrowseFileName( bBackup, bBackup ? STR_TITLE_BACKUP_PERMS : STR_TITLE_RESTORE_PERMS, TEXT("permissions.txt"), TEXT("*.txt"), PermsFile)) { return; } QuotePath(PermsFile); // Get the folder location stringT folder; if (GetFolderText(folder, false, bBackup ? true : false, true) == 0) return; stringT cmd; InitCommand(cmd); // Update the command prompt's title if (bBackup) { cmd += _TEXT("TITLE Backing up permissions of folder: ") + folder + STR_NEWLINE; cmd += STR_CMD_ICACLS + folder + _TEXT(" /save ") + PermsFile; if (bRecurse) cmd += _TEXT(" /T "); } else { cmd += _TEXT("TITLE Restoring permissions of folder: ") + folder + STR_NEWLINE; cmd += STR_CMD_ICACLS + folder + _TEXT(" /restore ") + PermsFile; } cmd += STR_NEWLINE2 + STR_CMD_PAUSE; SetCommandWindowText(cmd.c_str()); }
//------------------------------------------------------------------------- // Update the command text static void UpdateCommandText() { bool bRecurse = SendDlgItemMessage( hDlg, IDCHK_RECURSE, BM_GETCHECK, 0, 0) == BST_CHECKED; bool bResetPerm = SendDlgItemMessage( hDlg, IDCHK_RESETPERM, BM_GETCHECK, 0, 0) == BST_CHECKED; bool bRmHidSys = SendDlgItemMessage( hDlg, IDCHK_RM_HS, BM_GETCHECK, 0, 0) == BST_CHECKED; bool bTakeOwn = SendDlgItemMessage( hDlg, IDCHK_TAKEOWN, BM_GETCHECK, 0, 0) == BST_CHECKED; bool bDontFollowLinks = SendDlgItemMessage( hDlg, IDCHK_DONTFOLLOWLINKS, BM_GETCHECK, 0, 0) == BST_CHECKED; TCHAR Path[MAX_PATH * 4]; UINT len = GetDlgItemText(hDlg, IDTXT_FOLDER, Path, _countof(Path)); if (len == 0) return; stringT folder = Path; // Add the wildcard mask if (*folder.rbegin() != TCHAR('\\')) folder += _TEXT("\\"); folder += _TEXT("*"); // Quote the folder if needed if (folder.find(_T(' ')) != stringT::npos) { folder = _TEXT("\"") + folder; folder += _TEXT("\""); } stringT cmd; if (bTakeOwn) { cmd += _TEXT("takeown"); if (bRecurse) cmd += _TEXT(" /r "); cmd += _TEXT(" /f "); cmd += folder; cmd += STR_NEWLINE; } if (bResetPerm) { cmd += _TEXT("icacls "); cmd += folder; if (bRecurse) cmd += _TEXT(" /T "); if (bDontFollowLinks) cmd += _TEXT(" /L "); cmd += _TEXT(" /Q /C /RESET\r\n"); } if (bRmHidSys) { cmd += _TEXT("attrib"); if (bRecurse) cmd += _TEXT(" /s "); cmd += _TEXT(" -h -s "); cmd += folder; cmd += STR_NEWLINE; } cmd += STR_CMD_PAUSE; SetCommandWindowText(cmd.c_str()); }
//------------------------------------------------------------------------- // Update the command text void ResetPermissionDialog::UpdateCommandText() { UpdateCheckboxes(true); stringT folder; if (GetFolderText(folder, false, true, true) == 0) return; stringT cmd; InitCommand(cmd); // Form takeown.exe command if (bTakeOwn) { // Update the command prompt's title cmd += _TEXT("TITLE taking ownership of folder: ") + folder + STR_NEWLINE; cmd += STR_CMD_TAKEOWN; if (bRecurse) cmd += _TEXT(" /r "); if (bDontFollowLinks) cmd += _TEXT(" /SKIPSL "); cmd += _TEXT(" /f ") + folder + STR_NEWLINE2; } // // Form icacls.exe command // if (bResetPerm) { // Update the command prompt's title cmd += _TEXT("TITLE Taking ownership of folder: ") + folder + STR_NEWLINE; cmd += STR_CMD_ICACLS + folder; if (bRecurse) cmd += _TEXT(" /T "); if (bDontFollowLinks) cmd += _TEXT(" /L "); cmd += _TEXT(" /Q /C /RESET") + STR_NEWLINE2; } // Form attribute.exe command if (bRmHidSys) { // Update the command prompt's title cmd += _TEXT("TITLE Changing files attributes in folder: ") + folder + STR_NEWLINE; cmd += STR_CMD_ATTRIB; if (bRecurse) cmd += _TEXT(" /s "); cmd += _TEXT(" -h -s ") + folder + STR_NEWLINE2; } // Always add a pause and a new line cmd += STR_CMD_PAUSE; cmd += STR_NEWLINE; // Update the SetCommandWindowText(cmd.c_str()); }