Ошибки калькулятора windows

Время на прочтение
11 мин

Количество просмотров 88K

На днях компания Microsoft открыла исходный код калькулятора. Это приложение входило во все версии операционной системы Windows. Исходный код разных проектов Microsoft достаточно часто открывался за последние годы, но новость о калькуляторе в первый же день просочилась даже в нетехнологические средства массовой информации. Что ж, это популярная, но очень маленькая программа на языке C++. Тем не менее, статический анализ кода с помощью PVS-Studio выявил подозрительные места в проекте.

Введение

Калькулятор Windows наверняка знаком каждому пользователю этой операционной системы и не требует особого представления. Теперь же любой пользователь может изучить исходный код калькулятора на GitHub и предложить свои улучшения.

Общественность, например, уже обратила внимание на такую функцию:

void TraceLogger::LogInvalidInputPasted(....)
{
  if (!GetTraceLoggingProviderEnabled()) return;
  LoggingFields fields{};
  fields.AddString(L"Mode", NavCategory::GetFriendlyName(mode)->Data());
  fields.AddString(L"Reason", reason);
  fields.AddString(L"PastedExpression", pastedExpression);
  fields.AddString(L"ProgrammerNumberBase", GetProgrammerType(...).c_str());
  fields.AddString(L"BitLengthType", GetProgrammerType(bitLengthType).c_str());
  LogTelemetryEvent(EVENT_NAME_INVALID_INPUT_PASTED, fields);
}

которая логирует текст из буфера обмена и, возможно, отправляет его на серверы Microsoft. Но эта заметка не об этом. Хотя подозрительных примеров кода будет много.

Мы проверили исходный код калькулятора с помощью статического анализатора PVS-Studio. Так как код написан на нестандартном C++, многие постоянные читатели блога анализатора усомнились в возможности анализа, но это оказалось возможным. C++/CLI и C++/CX поддерживаются анализатором. Некоторые диагностики выдали ложные предупреждения из-за этого, но ничего критичного не произошло, что помешало бы воспользоваться этим инструментом.

Возможно, вы пропустили новости и о других возможностях PVS-Studio, поэтому хочу напомнить, что кроме проектов на языках C и C++, можно проанализировать код и на языках C# и Java.

Про неправильное сравнение строк

V547 Expression ‘m_resolvedName == L«en-US»’ is always false. To compare strings you should use wcscmp() function. Calculator LocalizationSettings.h 180

wchar_t m_resolvedName[LOCALE_NAME_MAX_LENGTH];

Platform::String^ GetEnglishValueFromLocalizedDigits(....) const
{
  if (m_resolvedName == L"en-US")
  {
    return ref new Platform::String(localizedString.c_str());
  }
  ....
}

Я просматриваю отчёты анализатора, сортируя их по возрастанию номеров диагностик, и предупреждение на этот код было самым первым в списке, и очень удачным.

Дело в том, что здесь неправильно сравниваются строки. Получилось сравнение указателей вместо значений строк. Сравнивается адрес массива символов с адресом строкового литерала. Указатели всегда неравны, поэтому условие всегда ложно. Для правильного сравнения строк следует использовать, например, функцию wcscmp.

Кстати, пока я пишу эту статью, в заголовочном файле массив символов m_resolvedName превратился в полноценную строку типа std::wstring. И теперь сравнение работает правильно. К моменту, когда вы будете читать эту статью, скорее всего, многие другие ошибки тоже будут исправлены благодаря энтузиастам и таким исследованиям, как это.

Утечка памяти в нативном коде

V773 The function was exited without releasing the ‘temp’ pointer. A memory leak is possible. CalcViewModel StandardCalculatorViewModel.cpp 529

void StandardCalculatorViewModel::HandleUpdatedOperandData(Command cmdenum)
{
  ....
  wchar_t* temp = new wchar_t[100];
  ....
  if (commandIndex == 0)
  {
    delete [] temp;
    return;
  }
  ....
  length = m_selectedExpressionLastData->Length() + 1;
  if (length > 50)
  {
    return;
  }
  ....
  String^ updatedData = ref new String(temp);
  UpdateOperand(m_tokenPosition, updatedData);
  displayExpressionToken->Token = updatedData;
  IsOperandUpdatedUsingViewModel = true;
  displayExpressionToken->CommandIndex = commandIndex;
}

Мы видим указатель temp, ссылающийся на массив из 100 элементов, под который выделена динамическая память. К сожалению, память освобождается всего в одном месте функции, во всех остальных местах возникает утечка памяти. Она не очень большая, но это всё равно ошибка для C++ кода.

Неуловимое исключение

V702 Classes should always be derived from std::exception (and alike) as ‘public’ (no keyword was specified, so compiler defaults it to ‘private’). CalcManager CalcException.h 4

class CalcException : std::exception
{
public:
  CalcException(HRESULT hr)
  {
    m_hr = hr;
  }
  HRESULT GetException()
  {
    return m_hr;
  }
private:
  HRESULT m_hr;
};

Анализатор обнаружил класс, унаследованный от класса std::exception через модификатор private (модификатор по умолчанию, если ничего не указано). Проблема такого кода заключается в том, что при попытке поймать общее исключение std::exception исключение типа CalcException будет пропущено. Такое поведение возникает потому, что приватное наследование исключает неявное преобразование типов.

Пропущенный день

V719 The switch statement does not cover all values of the ‘DateUnit’ enum: Day. CalcViewModel DateCalculator.cpp 279

public enum class _Enum_is_bitflag_ DateUnit
{
  Year = 0x01,
  Month = 0x02,
  Week = 0x04,
  Day = 0x08
};

Windows::Globalization::Calendar^ m_calendar;

DateTime
DateCalculationEngine::AdjustCalendarDate(Windows::Foundation::DateTime date,
                                          DateUnit dateUnit, int difference)
{
  m_calendar→SetDateTime(date);

  switch (dateUnit)
  {
    case DateUnit::Year:
    {
      ....
      m_calendar->AddYears(difference);
      m_calendar->ChangeCalendarSystem(currentCalendarSystem);
      break;
    }
    case DateUnit::Month:
      m_calendar->AddMonths(difference);
      break;
    case DateUnit::Week:
      m_calendar->AddWeeks(difference);
      break;
  }

  return m_calendar->GetDateTime();
}

Подозрительно, что в switch не рассмотрен случай с DateUnit::Day. Из-за этого в календарь (переменная m_calendar) не добавляется значение, связанное с днём, хотя метод AddDays у календаря присутствует.

Ещё несколько подозрительных мест с другим перечислением:

  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 109
  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 204
  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 276

Подозрительные сравнение вещественных чисел

V550 An odd precise comparison: ratio == threshold. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. Calculator AspectRatioTrigger.cpp 80

void AspectRatioTrigger::UpdateIsActive(Size sourceSize)
{
  double numerator, denominator;
  ....
  bool isActive = false;
  if (denominator > 0)
  {
    double ratio = numerator / denominator;
    double threshold = abs(Threshold);

    isActive = ((ratio > threshold) || (ActiveIfEqual && (ratio == threshold)));
  }

  SetActive(isActive);
}

Анализатор указал на подозрительное выражение ratio == threshold. Эти переменные типа double и точное сравнение таких переменных простым оператором равенства вряд ли возможно. Тем более, что значение переменной ratio получено после операции деления.

Это очень странный код для приложения «Калькулятор». Поэтому прикладываю весь список предупреждений этого типа:

  • V550 An odd precise comparison. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. CalcManager UnitConverter.cpp 752
  • V550 An odd precise comparison: stod(roundedString) != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcManager UnitConverter.cpp 778
  • V550 An odd precise comparison. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. CalcManager UnitConverter.cpp 790
  • V550 An odd precise comparison: stod(roundedString) != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcManager UnitConverter.cpp 820
  • V550 An odd precise comparison: conversionTable[m_toType].ratio == 1.0. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. CalcManager UnitConverter.cpp 980
  • V550 An odd precise comparison: conversionTable[m_toType].offset == 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. CalcManager UnitConverter.cpp 980
  • V550 An odd precise comparison: returnValue != 0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcManager UnitConverter.cpp 1000
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 270
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 289
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 308
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 327
  • V550 An odd precise comparison: stod(stringToLocalize) == 0. It’s probably better to use a comparison with defined precision: fabs(A — B) < Epsilon. CalcViewModel UnitConverterViewModel.cpp 388

Подозрительная последовательность функций

V1020 The function exited without calling the ‘TraceLogger::GetInstance().LogNewWindowCreationEnd’ function. Check lines: 396, 375. Calculator App.xaml.cpp 396

void App::OnAppLaunch(IActivatedEventArgs^ args, String^ argument)
{
  ....
  if (!m_preLaunched)
  {
    auto newCoreAppView = CoreApplication::CreateNewView();
    newCoreAppView->Dispatcher->RunAsync(....([....]()
    {
      TraceLogger::GetInstance().LogNewWindowCreationBegin(....); // <= Begin
      ....
      TraceLogger::GetInstance().LogNewWindowCreationEnd(....);   // <= End
    }));
  }
  else
  {
    TraceLogger::GetInstance().LogNewWindowCreationBegin(....);   // <= Begin

    ActivationViewSwitcher^ activationViewSwitcher;
    auto activateEventArgs = dynamic_cast<IViewSwitcherProvider^>(args);
    if (activateEventArgs != nullptr)
    {
      activationViewSwitcher = activateEventArgs->ViewSwitcher;
    }

    if (activationViewSwitcher != nullptr)
    {
      activationViewSwitcher->ShowAsStandaloneAsync(....);
      TraceLogger::GetInstance().LogNewWindowCreationEnd(....);   // <= End
      TraceLogger::GetInstance().LogPrelaunchedAppActivatedByUser();
    }
    else
    {
      TraceLogger::GetInstance().LogError(L"Null_ActivationViewSwitcher");
    }
  }
  m_preLaunched = false;
  ....
}

Диагностика V1020 анализирует блоки кода и эвристически пытается найти ветви, в которых забыт вызов функции.

В приведённом выше фрагменте кода анализатор нашёл блок с вызовом функций LogNewWindowCreationBegin и LogNewWindowCreationEnd. Ниже он нашёл похожий блок кода, в котором функция LogNewWindowCreationEnd вызывается только при определённых условиях, что подозрительно.

Ненадёжные тесты

V621 Consider inspecting the ‘for’ operator. It’s possible that the loop will be executed incorrectly or won’t be executed at all. CalculatorUnitTests UnitConverterViewModelUnitTests.cpp 500

public enum class NumbersAndOperatorsEnum
{
  ....
  Add = (int) CM::Command::CommandADD,   // 93
  ....
  None = (int) CM::Command::CommandNULL, // 0
  ....
};

TEST_METHOD(TestButtonCommandFiresModelCommands)
{
  ....
  for (NumbersAndOperatorsEnum button = NumbersAndOperatorsEnum::Add;
       button <= NumbersAndOperatorsEnum::None; button++)
  {
    if (button == NumbersAndOperatorsEnum::Decimal ||
        button == NumbersAndOperatorsEnum::Negate ||
        button == NumbersAndOperatorsEnum::Backspace)
    {
      continue;
    }
    vm.ButtonPressed->Execute(button);
    VERIFY_ARE_EQUAL(++callCount, mock->m_sendCommandCallCount);
    VERIFY_IS_TRUE(UCM::Command::None == mock->m_lastCommand);
  }
  ....
}

Анализатор обнаружил цикл for, в котором не выполняется ни одна итерация, а, следовательно, не выполняются и тесты. Начальное значение счётчика цикла button (93) сразу превышает конечное (0).

V760 Two identical blocks of text were found. The second block begins from line 688. CalculatorUnitTests UnitConverterViewModelUnitTests.cpp 683

TEST_METHOD(TestSwitchAndReselectCurrentlyActiveValueDoesNothing)
{
  shared_ptr<UnitConverterMock> mock = make_shared<UnitConverterMock>();
  VM::UnitConverterViewModel vm(mock);
  const WCHAR * vFrom = L"1", *vTo = L"234";
  vm.UpdateDisplay(vFrom, vTo);
  vm.Value2Active = true;
  // Establish base condition
  VERIFY_ARE_EQUAL((UINT)1, mock->m_switchActiveCallCount);
  VERIFY_ARE_EQUAL((UINT)1, mock->m_sendCommandCallCount);
  VERIFY_ARE_EQUAL((UINT)1, mock->m_setCurUnitTypesCallCount);
  vm.Value2Active = true;
  VERIFY_ARE_EQUAL((UINT)1, mock->m_switchActiveCallCount);
  VERIFY_ARE_EQUAL((UINT)1, mock->m_sendCommandCallCount);
  VERIFY_ARE_EQUAL((UINT)1, mock->m_setCurUnitTypesCallCount);
}

Ещё один тест с подозрительным кодом. Анализатор обнаружил идентичные фрагменты кода, выполняющиеся друг за другом. Возможно, код писался копированием этих фрагментов, но программист забыл изменить часть кода.

V601 The ‘false’ value is implicitly cast to the integer type. Inspect the second argument. CalculatorUnitTests CalcInputTest.cpp 352

Rational CalcInput::ToRational(uint32_t radix, int32_t precision) { .... }

TEST_METHOD(ToRational)
{
  ....
  auto rat = m_calcInput.ToRational(10, false);
  ....
}

В функцию ToRational передают булевское значение false, хотя параметр имеет тип int32_t и называется precision.

Я решил отследить используемое значение в коде. Далее оно передаётся в функцию StringToRat:

PRAT StringToRat(...., int32_t precision) { .... }

а затем в StringToNumber:

PNUMBER StringToNumber(...., int32_t precision)
{
  ....
  stripzeroesnum(pnumret, precision);
  ....
}

И вот тело нужной функции:

bool stripzeroesnum(_Inout_ PNUMBER pnum, long starting)
{
  MANTTYPE *pmant;
  long cdigits;
  bool fstrip = false;

  pmant=pnum->mant;
  cdigits=pnum->cdigit;
  
  if ( cdigits > starting ) // <=
  {
    pmant += cdigits - starting;
    cdigits = starting;
  }
  ....
}

Тут мы видим, что переменная precision стала называться starting и участвует в выражении cdigits > starting, что очень странно, ведь туда изначально передали значение false.

Избыточность

V560 A part of conditional expression is always true: NumbersAndOperatorsEnum::None != op. CalcViewModel UnitConverterViewModel.cpp 991

void UnitConverterViewModel::OnPaste(String^ stringToPaste, ViewMode mode)
{
  ....
  NumbersAndOperatorsEnum op = MapCharacterToButtonId(*it, canSendNegate);

  if (NumbersAndOperatorsEnum::None != op)      // <=
  {
    ....
    if (NumbersAndOperatorsEnum::None != op &&  // <=
        NumbersAndOperatorsEnum::Negate != op)
    {
      ....
    }
    ....
  }
  ....
}

Переменная op уже сравнивалась со значением NumbersAndOperatorsEnum::None и дублирующую проверку можно удалить.

V728 An excessive check can be simplified. The ‘(A && B) || (!A && !B)’ expression is equivalent to the ‘bool(A) == bool(B)’ expression. Calculator Calculator.xaml.cpp 239

void Calculator::AnimateCalculator(bool resultAnimate)
{
  if (App::IsAnimationEnabled())
  {
    m_doAnimate = true;
    m_resultAnimate = resultAnimate;
    if (((m_isLastAnimatedInScientific && IsScientific) ||
        (!m_isLastAnimatedInScientific && !IsScientific)) &&
        ((m_isLastAnimatedInProgrammer && IsProgrammer) ||
        (!m_isLastAnimatedInProgrammer && !IsProgrammer)))
    {
      this->OnStoryboardCompleted(nullptr, nullptr);
    }
  }
}

Это гигантское условное выражение изначально имело ширину 218 символов, но я разбил его на несколько строк для демонстрации предупреждения. А переписать код можно до такого короткого и, главное, читабельного варианта:

if (   m_isLastAnimatedInScientific == IsScientific
    && m_isLastAnimatedInProgrammer == IsProgrammer)
{
  this->OnStoryboardCompleted(nullptr, nullptr);
}

V524 It is odd that the body of ‘ConvertBack’ function is fully equivalent to the body of ‘Convert’ function. Calculator BooleanNegationConverter.cpp 24

Object^ BooleanNegationConverter::Convert(....)
{
    (void) targetType;    // Unused parameter
    (void) parameter;    // Unused parameter
    (void) language;    // Unused parameter

    auto boxedBool = dynamic_cast<Box<bool>^>(value);
    auto boolValue = (boxedBool != nullptr && boxedBool->Value);
    return !boolValue;
}

Object^ BooleanNegationConverter::ConvertBack(....)
{
    (void) targetType;    // Unused parameter
    (void) parameter;    // Unused parameter
    (void) language;    // Unused parameter

    auto boxedBool = dynamic_cast<Box<bool>^>(value);
    auto boolValue = (boxedBool != nullptr && boxedBool->Value);
    return !boolValue;
}

Анализатор обнаружил две функции, которые реализованы одинаково. По названиям функций Convert и ConvertBack можно предположить, что они должны выполнять разные действия, но разработчикам виднее.

Заключение

Наверное, каждый открытый проект от Microsoft давал нам возможность показать важность применения методологии статического анализа. Даже на таких маленьких проектах, как калькулятор. В таких крупных компаниях, как Microsoft, Google, Amazon и других, работает много талантливых программистов, но они такие же люди, которые делают ошибки в коде. Применение инструментов статического анализа кода — один из хороших способов повысить качество программ в любых командах разработчиков.

Проверь свой «Калькулятор», скачав PVS-Studio и попробовав на своём проекте. :-)

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Svyatoslav Razmyslov. Counting Bugs in Windows Calculator

Get your calculator working properly again with our quick guide

by Ivan Jenic

Passionate about all elements related to Windows and combined with his innate curiosity, Ivan has delved deep into understanding this operating system, with a specialization in drivers and… read more


Updated on March 17, 2023

Reviewed by
Vlad Turiceanu

Vlad Turiceanu

Passionate about technology, Windows, and everything that has a power button, he spent most of his time developing new skills and learning more about the tech world. Coming… read more

  • The Calculator is the default calculator app on Windows operating system.
  • To fix the problems with Calculator, you just need to reinstall it or update Windows to the latest version.
  • Errors can be caused by a calculator that is out of date, missing or error-ridden Registry and System files, or a User Account conflict.
  • If your calculator isn’t working properly, isn’t opening, is frozen, we’re here to assist you in resolving the issues.

Calculator X8 windows 10

Just like the previous versions of Windows, Windows 10 comes with some of the default apps such as a text editor, calendar, and Calculator. Speaking of which, some users are having certain issues and report that Windows 10 Calculator won’t work.

We have all used Windows Calculator, it’s a simple application that allows us to perform a quick calculations, so it’s unusual to see that the Calculator application isn’t working for some users.

If you’re having problems with Calculator on Windows 10 here are a few solutions that might help you.

Why does my Calculator not work on Windows 10?

There are many problems with Calculator that can occur on Windows 10, and in this article, we’ll show you how to fix the following issues:

  • Windows 10 Calculator doesn’t run, start, launch
    • Many users reported that the Calculator app won’t start at all on their Windows 10 PC.
    • According to them, the application is completely unresponsive.
  • The calculator won’t open on Windows 10
    • This is another variation of this problem, and many users reported that their Calculator app is unable to open.
    • This can be an annoying problem, but you should be able to fix it with one of our solutions.
  • Windows 10 Calculator opens then closes
    • Few users reported that Calculator on their PC opens and then instantly closes.
    • This is a standard problem, and you might be able to solve it by fixing corrupted files.
  • Windows 10 Calculator not working administrator
    • In some cases, the Calculator app might not work even if you’re using an administrator account.
    • To fix this problem, you need to reinstall the application.
  • Windows 10 Calculator crash, closes
    • Many users reported that their calculator frequently crashes or closes.
    • This can be an annoying problem, but you can fix it by using one of our solutions.

How can I fix the calculator not working in Windows 10?

In this article

  • Why does my Calculator not work on Windows 10?
  • How can I fix the calculator not working in Windows 10?
  • 1. Re-register Windows 10 apps using PowerShell
  • 2. Create a new user account
  • 3. Perform an SFC scan
  • 4. Install the missing updates
  • 5. Reinstall the Calculator app
  • 6. Uninstall the Calculator app
  • 7. Download the Windows app troubleshooter
  • 8. Turn off your firewall
  • 9. Enable User Account Control
  • 10. Reset the Calculator app
  • 11. End RuntimeBroker.exe process

1. Re-register Windows 10 apps using PowerShell

  1. In the Search Bar type PowerShell and right-click PowerShell app from the list of results.
  2. From the menu choose Run as administrator.
    run as administrator powershell calculator doesn't work
  3. When the PowerShell starts, paste the following line and press Enter to run it:
    • Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)AppXManifest.xml"} powershell Calculator won't open in Windows 10
  4. This will re-register all Windows 10 apps on your computer. Wait for the process to finish and then try running Calculator again.

2. Create a new user account

  1. In the Search bar type add user and choose Add, edit, or remove other users from the list of results. You could also do that by going to the Settings > Accounts >Family & other users.
    add user calculator doesn't work windows 10
  2. In the Family & other users section click the Add someone else to this PC.
    add someone else to this pc Windows 10 Calculator not working administrator
  3. Click on I don’t have this person’s sign-in information.
    I don't have this person's sign-in information Windows 10 Calculator crash
  4. Now click on Add a user without a Microsoft account.
    add a user without a Microsoft account Windows 10 Calculator doesn't start
  5. Now you need to enter username and password for local account.
    user information calculator doesn't work
  6. After you’ve created a new account switch to it.

If everything works, you can delete your old account, but remember to copy your personal files and documents to your new account. This might be a bit drastic solution, but it should help you if the Calculator doesn’t work on Windows 10.

3. Perform an SFC scan

  1. Press Windows Key + X to open Win + X menu. Now choose Command Prompt (Admin) from the list of results. If Command Prompt isn’t available, you can use PowerShell (Admin) instead.
    command prompt calculator app doesn't work
  2. When Command Prompt opens, enter sfc /scannow and press Enter.
  3. SFC scan will now start. The scanning process can take up to 15 minutes, so don’t interrupt it.

Once the scan is completed, check if the issue is resolved. If SFC can’t fix the problem or if you’re unable to run SFC scan, you need to use DISM instead.

  1. To do that, start Command Prompt as administrator.
  2. Now paste DISM /Online /Cleanup-Image /RestoreHealth command and run it.
  3. Wait while Windows performs the DISM scan.

The scan process can take up to 10-20 minutes, so don’t interrupt it.

Once the DISM scan is finished, the issue should be resolved. If you were unable to run an SFC scan before, run it after running a DISM scan and check if that solves your problem.

4. Install the missing updates

  1. Press Windows Key + I to open the Settings app.
  2. When the Settings app opens, navigate to the Update & security section.
    update and security Windows 10 Calculator not working administrator
  3. Click on the Check for updates button. Windows will now check for available updates. If updates are available, they will be downloaded automatically in the background.
    check for updates Windows 10 Calculator closes

Installing the latest updates can fix bugs and glitches that can cause the Calculator to stop working.

5. Reinstall the Calculator app

Open the Microsoft Store from the Start menu and reinstall the Calculator app. If you need more guidance, be sure to check our article on how to reinstall Windows Store apps.

6. Uninstall the Calculator app

If establishing a new user account in Windows Calculator does not resolve the issue, you can uninstall it.

Because you can’t do it the ordinary way, you’ll need to use an advanced method to reinstall Windows Calculator using an excellent uninstaller application like IObit Uninstaller.

IObit Uninstaller is a helpful uninstallation tool for PCs that runs great on Microsoft Windows apps. It removes any unwanted programs with all associated files for better PC performance. 

Simply launch IObit Uninstaller after downloading it and choose All programs from the left panel. You’ll notice a list of all your applications there, where you’ll easily select the Calculator app, and click the trash icon to completely remove it from the Windows operating system.

 Get IObit Uninstaller

7. Download the Windows app troubleshooter

  1.  Download Windows apps troubleshooter.
  2. After downloading the tool, run it and let it scan your PC.
  3. If the troubleshooter finds any issues with your apps, it will automatically fix them.

If Calculator doesn’t work in Windows 10, using the Windows app troubleshooter is one of the simplest and fastest ways to fix it.

8. Turn off your firewall

  1. Press Windows Key + S and enter firewall. Select Windows Firewall from the list of results.
    windows defender firewall windows calculator doesn't work
  2. Click on Turn Windows Firewall on or off in the menu on the left.
    turn off windows firewall Calculator won't open in Windows 10
  3. Now select Turn off Windows Firewall (not recommended) for both Private and Public network settings. Click on OK to save changes.
    Turn off windows firewall calculator doesn't work Windows 10

After disabling your firewall, check if the issue still appears. If not, you might want to enable your firewall and create a security exception for the Calculator app and check if that solves the problem. In case you use a third-party firewall, as a part of antivirus software, try disabling it instead.

9. Enable User Account Control

  1. Press Windows Key + S and enter user account control. Select Change User Account Control settings.
    change User account control settings Windows 10 calculator doesn't work
  2. Move the slider to the default position and click on OK to save changes.
    user account control slider calculator doesn't work windows 10

Few users reported that Calculator doesn’t work if User Account Control is disabled, so by enabling it you should be able to fix the problem.

10. Reset the Calculator app

1. Open the Settings app. You can do this by inputting settings in the Windows Search box and pressing Enter.

2. Go to the Apps section. A list of all applications will now appear.

go to apps

3. Select Calculator and click on Advanced options.

go to calculator

4. Now click on the Reset button.

reset calculator button

5. Select Reset again in the confirmation window. After doing that, the problem should be resolved and you’ll be able to use Calculator without any issues.

When your Windows 10 calculator is not working properly, another quick fix is simply resetting the Calculator app.

This can be done via Settings in just a few clicks and should solve any problems related to the app.

11. End RuntimeBroker.exe process

Sometimes background processes can cause issues with the Calculator app. If Calculator doesn’t work on your Windows 10 PC, the cause might be the RuntimeBroker.exe process.

To fix the issue, you need to end this process by doing the following:

  1. Press Ctrl + Shift + Esc to open Task Manager.
  2. When Task Manager starts, locate Runtime Broker, right-click it, and choose End task from the menu.
    end task runtime broker Windows 10 Calculator not working administrator

After ending the Runtime Broker process, check if the issue is resolved. Keep in mind that this is just a workaround, so you might have to repeat this solution if the issue reappears.

Tip icon
Tip

We covered Calculator updates and issues in the past, so if you’re having any other problems with it, be sure to check our Calculator hub for more information. If you’re having additional Windows 10 issues, we advise that you check out our Windows 10 errors hub for more helpful articles.

That would be all, I hope this article helped you with calculator problems in Windows 10. If you have any comments or questions, just reach out to the comment section below

newsletter icon

Баг калькулятора Windows 7 .

Рассмотрим одну занимательную ошибку в одном из редко используемых, но, конечно же, полезных приложений Windows, а конкретно в калькуляторе. Этот баг, думаю, пошатнёт ваши элементарные знания алгебры, а, может, математики, вообще. Предлагаю приступить прямо к делу и начать с открытия утилиты этого самого калькулятора:

Пуск – Найти программы и файлыcalcEnter

Пользуемся при наборе и вычислении кнопкой мыши. Наберите цифру, например,  4. Теперь нажатием на кнопку квадратного корня извлеките этот самый корень. Что получилось у вас? Верно, 2. Теперь вычитайте 2. Знак равенства подытожит наши расчёты … Что получилось? Ноль, думаете? Ан нет ))). Вот, по мнению калькулятора Windows, абсолютно верный ответ:

Баг калькулятора Windows

А в текстовом редакторе MS Word тоже калькулятор есть…

Баг калькулятора Windows 7 . В чём же дело?

Потаённый смысл здесь заключается в том, что вместо числа 4 вы можете использовать любое вам понравившееся. Для простоты попробуйте числа,  квадратный корень которых целое число. И вычитая это же число, как в примере выше, и ожидая увидеть нулевое значение, всегда будете удивлены. Причём результат будет отличен не только от ноля, но и разнится в числах после запятой. Может, учёные мужи, поднаторевшие в математике, пояснят почему? А может, вопрос и не к ним…

А говорят, исправили.

Как я понял, баг калькулятора в Windows 7 так и оставили. На Windows 8.1 он также появлялся регулярно. А вот с появлением Windows 10 сборки 17639 проблемы уже нет. Так что ждём новых смешных ошибок.

Откройте для себя ещё больше трюков на сайте Компьютер76

Успехов

Не работает калькулятор Windows 10

Для некоторых пользователей калькулятор — одна из самых часто используемых программ, а потому возможные проблемы с его запуском в Windows 10 могут вызывать серьезный дискомфорт.

В этой инструкции подробно о том, что делать, если не работает калькулятор в Windows 10 (не открывается или закрывается сразу после запуска), где находится калькулятор (если вдруг вы не можете найти, как его запустить), как использовать старую версию калькулятора и другая информация, которая может оказаться полезной в контексте использования встроенного приложения «Калькулятор».

Где находится калькулятор в Windows 10 и как его запустить

Калькулятор в Windows 10 по умолчанию присутствует в виде плитки в меню «Пуск» и в списке всех программ под буквой «К».

Если по какой-то причине найти его там не удается, вы можете начать набирать слово «Калькулятор» в поиске на панели задач для запуска калькулятора.

Еще одно расположение, откуда возможен запуск калькулятора Windows 10 (и этот же файл можно использовать, чтобы создать ярлык калькулятора на рабочем столе Windows 10) — C: Windows System32 calc.exe

В том случае, если ни поиском ни в меню Пуск обнаружить приложение не удается, возможно, оно было удалено (см. Как удалить встроенные приложения Windows 10). В такой ситуации вы легко можете переустановить его, зайдя в магазин приложений Windows 10 — там он находится под именем «Калькулятор Windows» (и там же вы обнаружите множество других калькуляторов, которые, возможно, вам приглянутся).

К сожалению, нередко случается, что даже при наличии калькулятора, он не запускается или же закрывается сразу после запуска, разберемся с возможными способами решения этой проблемы.

Что делать, если не работает калькулятор Windows 10

Если калькулятор не запускается, можно попробовать выполнить следующие действия (за исключением тех случаев, когда вы видите сообщение о том, что он не может быть запущен из встроенной учетной записи Администратора, в этом случае вам стоит попробовать создать нового пользователя, с именем, отличным от «Администратор» и работать из под него, см. Как создать пользователя Windows 10)

  1. Зайдите в Пуск — Параметры — Система — Приложения и возможности.
  2. Выберите «Калькулятор» в списке приложений и нажмите «Дополнительные параметры».
  3. Нажмите кнопку «Сбросить» и подтвердите сброс.

После этого попробуйте снова запустить калькулятор.

Еще одна возможная причина того, что калькулятор не запускается — отключенный контроль учетных записей (UAC) Windows 10, попробуйте включить — Как включить и отключить UAC в Windows 10.

Если это не сработало, а также проблемы запуска возникают не только с калькулятором, но и другими приложениями, вы можете попробовать способы, описанные в руководстве Не запускаются приложения Windows 10 (обратите внимание, что способ сброса приложений Windows 10 с помощью PowerShell иногда приводит к обратному результату — работа приложений нарушается еще больше).

Как установить старый калькулятор из Windows 7 в Windows 10

Если вам непривычен или неудобен новый вид калькулятора в Windows 10, вы можете установить старый вариант калькулятора. До недавних пор с официального сайта Майкрософт можно было скачать Microsoft Calculator Plus, однако на текущий момент времени его оттуда убрали и найти его можно только на сторонних сайтах, и он немного отличается от стандартного калькулятора Windows 7.

Для загрузки стандартного старого калькулятора можно использовать сайт http://winaero.com/download.php?view.1795 (используйте пункт Download Old Calculator for Windows 10 from Windows 7 or Windows 8 внизу страницы). На всякий случай, проверьте установщик на VirusTotal.com (на момент написания статьи всё чисто).

Несмотря на то, что сайт англоязычный, для русской системы устанавливается калькулятор на русском языке и, при этом, он становится калькулятором по умолчанию в Windows 10 (например, если у вас на клавиатуре есть отдельная клавиша для запуска калькулятора, по ее нажатии будет запущен именно старый вариант).

На этом всё. Надеюсь, для кого-то из читателей инструкция оказалась полезной.

А вдруг и это будет интересно:

Почему бы не подписаться?

Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)

Я просто «выковырял» (или выковорил?) калькулятор из установленной семерки:
C:Windowssystem32calc.exe

Спасибо за сайт! Есть много статей, действительно очень интересных и полезных. (что становиться большой редкостью уже, к сожалению)

Врёт этот олд калькулятор! Безбожно врёт! Попробуйте вычесть % из числа!

Тише, без паники!
Нормально процент считается. Не нагоняй.

Проблема в Windows 10 с работой калькулятора (и не только) бывает при отключенном Контроле учетных записей. Включение оного решает проблему.

В 1703 и 1709 вроде пофиксили этот вариант (нерабочие приложения при отключенном UAC).

и правда, врет! Процент не вычисляется!

Понимаю, что тема старая, но может кто подскажет, как можно запретить запуск нескольких копий калькулятора в win10? Если приложение запущено, то активировать его.

Здравствуйте.
Раздел реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAppKey18
Там по идее будет указано calc.exe для запуска. Нужно указать вместо просто calc.exe

Все описанные автором статьи процедуры НЕ УСТРАНЯЮТ проблему.
Winows 10 Предприятие. Калькулятор запускается, и мгновенно выгружается. В Диспетере задач он сидит на закладке Журнал приложений (там еще Почта и Календарь). Правой кнопкой мыши можно только Переключиться, что приводит к тому же результату — мигнет и исчезает.
Все описанные автором статьи процедуры НЕ УСТРАНЯЮТ проблему.

Методы отсюда тоже попробованы? — https://remontka.pro/apps-dont-work-windows-10/
В качестве имени пользователя не «Администратор» случайно используется? (речь именно об имени учетной записи).

Класс! спасибо!) отличный сайт!)

Как русифицировать калькулятор Windows 10. В магазине Microsoft русский язык для него не поддерживается. Спасибо

Странно… он на русском вроде и без того. У вас точно обычный калькулятор от Майкрософт, а не какой-то другой? (их в магазине много).
А параметры языка приложений зависят от того, что выставлено в Параметры — Регион и язык в регионе (Россия) и языке (русский должен быть «сверху» )

У меня «сверху» язык английский (мне так удобнее), интерфейс Windows — русский. Поэтому и спрашиваю: «Как русифицировать калькулятор?» Или только поменять «верхний» язык на русский.

Калькулятор имеет встроенный русский язык интерфейса, язык его интерфейса выбирается на основании того языка который как раз «сверху» в параметрах и не зависит от языка интерфейса системы (также учитывайте, что изменения вступают в силу не сразу, а после того как вы закроете параметры и перезапустите калькулятор). То есть он уже русифицирован, но у вас отображается на английском.

Как изменить его язык не меняя порядок языков — не знаю и предполагаю, что для встроенных приложений, где отсутствуют собственные настройки языка это не получится. Ответы на аналогичный вопрос на сайте Майкрософт тоже без ответа.

Спасибо. Очень хороший у Вас сайт. Нахожу ответы на многие вопросы.

Еще можно запустить PowerShell от админа и вставить туда команду

Установит все приложения которые должны быть по умолчанию.

На клавиатуре есть кнопка калькулятор — но на WIN 10 она не работает. Старый калькулятор тоже не запускается по клавише. Как починить?

На этой клавише где калькулятор нет никаких больше значков или действий? (бывает, что по одной клавише несколько действий, тогда через Fn или какой-то еще переключатель одно из действий выполняется).
Также для некоторых клавиатур для этого нужны отдельные драйверы от производителя, нет ли для вашей на официальном сайте таких?

Он на кнопке Enter в разделе NUM. Я долго ковырялся, но включить не смог.

Через Fn + этак клавиша не включается? (если есть Fn). Если ноутбук, то для полноценной работы Fn-сочетаний, могут требоваться официальные утилиты/драйверы с сайта производителя.

Спс помогло, калькулятор до этого странно работал, открывал его только переключусь на другую вкладку — всё в него тупо зайти нельзя было через альт таб, но он был в диспетчере задач и за сутки раз 20 открывал его

Спасибо большое за статью! После запуска вашей ссылки на командную строку в Powershell все приложения заработали.

У меня в панели задач появлялся значок на полсекунды. Оказалось в службах была отключен пункт «Служба Windows License Manager». После включения проблема с запуском калькулятора исчезла

Источник

Решение проблем с запуском Калькулятора в Windows 10

Калькулятор — стандартное приложение семейства операционных систем Виндовс, которое позволяет пользователям быстро производить расчеты разного уровня. С работоспособностью данной программы редко возникают какие-либо ошибки, однако если они появляются, большинство юзеров просто не знает, как с ними справиться, поскольку такая ситуация нетипична и сталкиваются с ней редко. Мы постараемся дать развернутый ответ по теме решения неполадки, описав все доступные варианты решения, взяв за пример последнюю версию Windows 10.

Способ 1: Сброс параметров приложения

Начнем с самых простых и действенных методов, постепенно переходя к сложным и тем, которые реже оказываются эффективными в сложившейся ситуации. Первым на очереди выступит вариант, подразумевающий банальный сброс параметров приложения, что чаще всего помогает наладить его нормальное функционирование. Для этого пользователю потребуется выполнить всего несколько простых манипуляций.

  1. Откройте меню «Пуск» и перейдите в раздел «Параметры», кликнув по значку в виде шестеренки, который расположился на левой панели.

Здесь вас интересует категория «Приложения».

Дождитесь загрузки списка, опуститесь вниз и отыщите там «Калькулятор». Кликните по строке левой кнопкой мыши для открытия меню выбора.

Сначала нажмите по «Завершить», чтобы закончить все процессы, связанные с Калькулятором, а затем на «Сбросить» для обнуления настроек.

Подтвердите сброс, повторно щелкнув по появившейся кнопке.

Сразу же после этого вы получите сообщение о том, что данные приложения сброшены и оно готово к повторному запуску. Произведите эту операцию, чтобы убедиться в нормализации функционирования Калькулятора. Если это не принесло никаких результатов, переходите к ознакомлению со следующими инструкциями.

Способ 2: Переустановка всех стандартных приложений

Этот метод предполагает выполнение всего двух шагов, однако времени займет больше предыдущего, поскольку используемая утилита будет переустанавливать все классические приложения операционной системы. Вы не потеряете личные данные, поэтому можете не бояться выполнять следующие действия. Однако стоит заметить, что сам процесс займет более пяти минут и во время этого не рекомендуется производить других манипуляций на компьютере. В первую очередь запустите консоль «PowerShell» от имени администратора. Проще всего это сделать через контекстное меню, кликнув ПКМ по «Пуск».

После этого остается только ввести команду Get-AppXPackage -AllUsers | Foreach и нажать по клавише Enter. Сразу же начнется переустановка компонентов. Не закрывайте окно и дождитесь появления информации об успешном завершении процедуры.

По окончании переустановки переходите к открытию Калькулятора, проверив тем самым корректность его работы.

Способ 3: Включение контроля учетных записей

Опция контроля учетных записей в Виндовс предназначена для предотвращения внесения изменений программами без ведома администратора. Иногда пользователи отключают ее из-за определенных целей, что не благоприятно влияет на функционирование стандартных приложений из магазина Microsoft, к которым относится и рассматриваемое сегодня. Мы рекомендуем проверить опцию контроля и включить ее, если это потребуется.

    Откройте «Пуск» и через поиск отыщите приложение «Панель управления».

Там выберите раздел «Центр безопасности и обслуживания».

На левой панели кликните по надписи «Изменение параметров контроля учетных записей».

Поднимите ползунок на одно или два значения вверх, если он находится в самом нижнем положении, а затем щелкните на «ОК» для применения изменений.

Если в будущем такие изменения не принесут положительного результата, вы можете точно таким же способом вернуть состояние опции контроля учетных записей пользователей в изначальное положение, чтобы не испытывать трудности с работоспособностью другого софта.

Способ 4: Запуск средства устранения неполадок

В Виндовс 10 имеется встроенное средство неполадок, позволяющее решить проблемы с работой установленных из магазина приложений. Мы рекомендуем запускать его только в том случае, когда вы уже выполнили приведенные выше рекомендации, поскольку оно само порекомендует сбросить данные Калькулятора или включить контроль учетных записей.

    Откройте меню Параметры уже знакомым способом и перейдите в раздел «Обновление и безопасность».

Через левую панель переместитесь к категории «Устранение неполадок».

Отыщите пункт «Приложения из Магазина Windows», щелкните по нему, а затем по появившейся кнопке «Запустить средство устранения неполадок».

Ожидайте окончания сканирования. Эта операция не займет много времени.

После этого на экране появятся рекомендации. Выполните их, чтобы решить возникшую неполадку, или просто следуйте отобразившимся инструкциям.

Способ 5: Отключение Брандмауэра

Мы переходим к методам, которые нечасто оказываются эффективными, но выполнить их стоит, если советы выше не принесли должного результата. Не всегда даже проверенные межсетевые экраны операционной системы функционируют должным образом. Иногда они мешают запуску доброжелательных программ, что может случиться и с Калькулятором. Проверить этот фактор можно только путем отключения брандмауэра. Что касается установленных сторонних межсетевых экранов, то на них детально останавливаться мы не будем, поскольку пользователь, установивший подобное решение, сам знает все об управлении им или способен прочесть официальную документацию. В случае со встроенным брандмауэром мы рекомендуем обратить внимание на отдельную инструкцию от другого нашего автора, перейдя по следующей ссылке.

Способ 6: Использование утилиты SFC

Знакомая многим утилита SFC предназначена для проверки системы на ошибки, а также оперативного их исправления. Иногда такие системные сбои являются причиной отказа приложений запускаться, что может коснуться и Калькулятора. На нашем сайте имеется отдельный материал, где автор детально рассказывает о восстановлении файлов путем использования SFC и DISM, если это будет необходимо. Ознакомьтесь с ним и следуйте приведенному руководству, чтобы наладить работу ОС.

Способ 7: Установка последних обновлений Windows 10

Предпоследний вариант заключается в установке недостающих обновлений, ведь иногда разработчики выпускают важные изменения, влияющие на общую работу компьютера. Возможно, после установки всех недостающих апдейтов проблема с запуском Калькулятора решится сама собой. Более детально об этом читайте, кликнув по одной из следующих ссылок.

Способ 8: Переустановка Калькулятора

Напоследок поговорим о самом радикальном способе — ручной переустановке рассматриваемого софта. Иногда она помогает справиться со сбоем, но мы не можем этого гарантировать. Производите следующие действия только в той ситуации, когда уже выполнили все семь описанных выше методов и те оказались безрезультатны.

    Откройте «Параметры», например, нажав по соответствующей кнопке в меню «Пуск».

Перейдите в раздел «Приложения».

Отыщите там «Калькулятор» и откройте его дополнительные параметры.

Щелкните по «Удалить» и дождитесь полной деинсталляции ПО.

Через поиск в «Пуск» отыщите «Microsoft Store» и запустите этот магазин.

Найдите там страницу того самого классического калькулятора.

Щелкните по кнопке «Get» («Получить»).

По окончании инсталляции можете пробовать запустить приложение.

Существует альтернативный вариант удаления стандартного приложения, если рассмотренный только что вам по каким-то причинам не подходит. Узнать о нем можно в отдельной статье на нашем сайте.

Это была вся информация по восстановлению Калькулятора, которой мы хотели поделиться в рамках этого материала. Если проблемы наблюдаются сразу же после установки ОС, особенно нелицензионной, вполне возможно, что именно в этой сборке программа отказывается работать корректно. Остается только использовать сторонние аналоги или искать другую сборку операционной системы.

Источник

Содержание

  1. Калькулятор в Windows 10 неправильно считает?
  2. Подсчитаем баги в калькуляторе Windows
  3. Содержание
  4. Введение
  5. Про неправильное сравнение строк
  6. Утечка памяти в нативном коде
  7. Неуловимое исключение
  8. Пропущенный день
  9. Подозрительные сравнение вещественных чисел
  10. Избыточность
  11. Заключение
  12. Почему не работает калькулятор Windows 10
  13. Как найти калькулятор на Windows 10
  14. Исправляем проблему, когда не работает калькулятор Windows 10
  15. Установка аналогичного калькулятора на Windows 10
  16. Дополнительные действия, если не работает калькулятор Windows 10

Калькулятор в Windows 10 неправильно считает?

Бывает в сети случаются курьезные ситуации и это не исключение. Пользователь Reddit под ником EvilDoesIt опубликовал информацию, которая свидетельствует о том, что калькулятор в Windows 10 работает неправильно. Судя по скриншоту, программа неправильно считает значения. Если по идее результат должен был равняется 8-ми, он получается равен 12-ти. Пользователю практически сразу же ответили и при этом отметили, что для того чтобы он правильно считал по формуле нужно перейти в инженерный режим. И все бы ничего, если бы обсуждение не затянулось на почти 700 сообщений при этом Интернет-ресурсы начали пестрить заголовками о том, что калькулятор в Windows 10 не умеет правильно считать, но так ли это на самом деле? Естественно нет. Тогда почему в одном режиме калькулятор получает цифру 8, а в другом – 12. Все очень просто.

В первом случае калькулятор просто-напросто считает числа последовательно. Возьмите любой бухгалтерский калькулятор и поверьте он точно также посчитает, как и здесь. Точно также посчитает калькулятор и на ранних версиях Windows, просто не будет записана последовательность действий, как это сделано в Windows 10. Видно это многих заводит в заблуждение. Если вы все-равно смирится с этим не можете, то в первое выражение дорисуйте виртуальные скобочки и все станет на свои места. У стандартного калькулятор просто не стоит задачи считать по формуле, он просто считает это последовательно и все свои действия записывает в журнал. Инженерный же калькулятор работает по-другому. Как только вы ставите умножить или разделить, или ставите фигурные скобочки для какого-то выражения (в стандартном калькуляторе так нельзя кстати), то калькулятор заново пересчитывает это выражение. И да, как раз-таки инженерный калькулятор считает математически верно, в отличие от стандартного, где считается последовательность выражений. Думаю, с этим понятно.

Кстати, подобное уже всплывало месяца два назад в социальной сети ВКонтакте, когда тоже говорили, что калькулятор Windows 10 неправильно считает. Но тогда эта тема быстра заглохла, а теперь она опять всплывает с новой силой и к сожалению, многие в это верят. Если уже появляется подобная информация, то для начала нужно подумать головой: “А почему он так считает и было ли раньше такое, и так далее?” Не ну вы представьте, если бы калькулятор считал неправильно, это поставило бы под сомнение как софтверную часть компьютера, так и хардверную. А так как большие умы молчат, значит и там, и там все нормально. Думайте перед тем, как что-то заявлять.

Подсчитаем баги в калькуляторе Windows

Содержание

На днях компания Microsoft открыла исходный код калькулятора. Это приложение входило во все версии операционной системы Windows. Исходный код разных проектов Microsoft достаточно часто открывался за последние годы, но новость о калькуляторе в первый же день просочилась даже в нетехнологические средства массовой информации. Что ж, это популярная, но очень маленькая программа на языке C++. Тем не менее, статический анализ кода с помощью PVS-Studio выявил подозрительные места в проекте.

Введение

Калькулятор Windows наверняка знаком каждому пользователю этой операционной системы и не требует особого представления. Теперь же любой пользователь может изучить исходный код калькулятора на GitHub и предложить свои улучшения.

Общественность, например, уже обратила внимание на такую функцию:

которая логирует текст из буфера обмена и, возможно, отправляет его на серверы Microsoft. Но эта заметка не об этом. Хотя подозрительных примеров кода будет много.

Мы проверили исходный код калькулятора с помощью статического анализатора PVS-Studio. Так как код написан на нестандартном C++, многие постоянные читатели блога анализатора усомнились в возможности анализа, но это оказалось возможным. C++/CLI и C++/CX поддерживаются анализатором. Некоторые диагностики выдали ложные предупреждения из-за этого, но ничего критичного не произошло, что помешало бы воспользоваться этим инструментом.

Обзоры ошибок в других проектах:

Возможно, вы пропустили новости и о других возможностях PVS-Studio, поэтому хочу напомнить, что кроме проектов на языках C и C++, можно проанализировать код и на языках C# и Java.

Про неправильное сравнение строк

V547 Expression ‘m_resolvedName == L»en-US»‘ is always false. To compare strings you should use wcscmp() function. Calculator LocalizationSettings.h 180

Я просматриваю отчёты анализатора, сортируя их по возрастанию номеров диагностик, и предупреждение на этот код было самым первым в списке, и очень удачным.

Дело в том, что здесь неправильно сравниваются строки. Получилось сравнение указателей вместо значений строк. Сравнивается адрес массива символов с адресом строкового литерала. Указатели всегда неравны, поэтому условие всегда ложно. Для правильного сравнения строк следует использовать, например, функцию wcscmp.

Кстати, пока я пишу эту статью, в заголовочном файле массив символов m_resolvedName превратился в полноценную строку типа std::wstring. И теперь сравнение работает правильно. К моменту, когда вы будете читать эту статью, скорее всего, многие другие ошибки тоже будут исправлены благодаря энтузиастам и таким исследованиям, как это.

Утечка памяти в нативном коде

V773 The function was exited without releasing the ‘temp’ pointer. A memory leak is possible. CalcViewModel StandardCalculatorViewModel.cpp 529

Мы видим указатель temp, ссылающийся на массив из 100 элементов, под который выделена динамическая память. К сожалению, память освобождается всего в одном месте функции, во всех остальных местах возникает утечка памяти. Она не очень большая, но это всё равно ошибка для C++ кода.

Неуловимое исключение

V702 Classes should always be derived from std::exception (and alike) as ‘public’ (no keyword was specified, so compiler defaults it to ‘private’). CalcManager CalcException.h 4

Анализатор обнаружил класс, унаследованный от класса std::exception через модификатор private (модификатор по умолчанию, если ничего не указано). Проблема такого кода заключается в том, что при попытке поймать общее исключение std::exception исключение типа CalcException будет пропущено. Такое поведение возникает потому, что приватное наследование исключает неявное преобразование типов.

Пропущенный день

V719 The switch statement does not cover all values of the ‘DateUnit’ enum: Day. CalcViewModel DateCalculator.cpp 279

Подозрительно, что в switch не рассмотрен случай с DateUnit::Day. Из-за этого в календарь (переменная m_calendar) не добавляется значение, связанное с днём, хотя метод AddDays у календаря присутствует.

Ещё несколько подозрительных мест с другим перечислением:

  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 109
  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 204
  • V719 The switch statement does not cover all values of the ‘eANGLE_TYPE’ enum: ANGLE_RAD. CalcManager trans.cpp 276

Подозрительные сравнение вещественных чисел

V550 An odd precise comparison: ratio == threshold. It’s probably better to use a comparison with defined precision: fabs(A — B) Epsilon. CalcManager UnitConverter.cpp 778

  • V550 An odd precise comparison. It’s probably better to use a comparison with defined precision: fabs(A — B) Epsilon. CalcManager UnitConverter.cpp 820
  • V550 An odd precise comparison: conversionTable[m_toType].ratio == 1.0. It’s probably better to use a comparison with defined precision: fabs(A — B) Epsilon. CalcManager UnitConverter.cpp 1000
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 270
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 289
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 308
  • V550 An odd precise comparison: sizeToUse != 0.0. It’s probably better to use a comparison with defined precision: fabs(A — B) > Epsilon. CalcViewModel LocalizationService.cpp 327
  • V550 An odd precise comparison: stod(stringToLocalize) == 0. It’s probably better to use a comparison with defined precision: fabs(A — B) starting, что очень странно, ведь туда изначально передали значение false.

    Избыточность

    V560 A part of conditional expression is always true: NumbersAndOperatorsEnum::None != op. CalcViewModel UnitConverterViewModel.cpp 991

    Переменная op уже сравнивалась со значением NumbersAndOperatorsEnum::None и дублирующую проверку можно удалить.

    V728 An excessive check can be simplified. The ‘(A && B) || (!A && !B)’ expression is equivalent to the ‘bool(A) == bool(B)’ expression. Calculator Calculator.xaml.cpp 239

    Это гигантское условное выражение изначально имело ширину 218 символов, но я разбил его на несколько строк для демонстрации предупреждения. А переписать код можно до такого короткого и, главное, читабельного варианта:

    V524 It is odd that the body of ‘ConvertBack’ function is fully equivalent to the body of ‘Convert’ function. Calculator BooleanNegationConverter.cpp 24

    Анализатор обнаружил две функции, которые реализованы одинаково. По названиям функций Convert и ConvertBack можно предположить, что они должны выполнять разные действия, но разработчикам виднее.

    Заключение

    Наверное, каждый открытый проект от Microsoft давал нам возможность показать важность применения методологии статического анализа. Даже на таких маленьких проектах, как калькулятор. В таких крупных компаниях, как Microsoft, Google, Amazon и других, работает много талантливых программистов, но они такие же люди, которые делают ошибки в коде. Применение инструментов статического анализа кода — один из хороших способов повысить качество программ в любых командах разработчиков.

    Проверь свой «Калькулятор», скачав PVS-Studio и попробовав на своём проекте. 🙂

    Найдите ошибки в своем C, C++, C# и Java коде

    Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

    Почему не работает калькулятор Windows 10

    При работе с системой можно столкнуться с разного рода проблемами. В «десятке» их довольно много, но решит их можно. Одной из дефектов системы является ошибки, не работает калькулятор Windows 10. В калькулятор мы можем совершать быстрые расчеты, чтобы не тратить время. Конечно, можно воспользоваться и смартфоном, но некоторым в данный момент может быть доступен только десктопный калькулятор.

    Здесь я хочу написать два способа решения и, может быть, парочку дополнительных действий. Что значит, не работает калькулятор? Например, он не запускается, вылетает, лагает, ведь это такое же приложение, как другие, установленные в системе.

    Как найти калькулятор на Windows 10

    Сейчас вряд ли этот вопрос имеет актуальность, так как с Windows 10 уже многие разобрались. Что-то найти в системе можно через Пуск. Открываете его и слева листаем до приложения «Калькулятор». Можно ввести в поиске и мгновенно отобразится нужный результат.

    Если там калькулятора нет, а в поиске он почему-то не отображается, используйте проводник. Зайдите на системный диск и следуйте по пути: C: WindowsSystem32. Там найдите приложение calc.exe. Даже значок будет соответствующий.

    Наконец, отсутствие приложения во всех перечисленных местах будет говорить о том, что «Калькулятор» удален или из-за багов системы и вирусов он скрыт.

    Так как калькулятор является системным ПО, тогда прочитайте статью по удалению и сбросу приложений Windows 10.

    Исправляем проблему, когда не работает калькулятор Windows 10

    Самый простой способ избавиться от проблемки – сбросить приложение. Заходим в параметры системы (нажимаем комбинацию «Win+I») дальше переходим в раздел «Приложения».

    Заходим на вкладку «Приложения и возможности» ищем среди списка справа калькулятор. Нажимаем по нему и щелкаем по пункту «Дополнительные параметры».

    Появляется окошко, где жмём кнопку «Сбросить». А потом подтверждаем действие.

    Таким образом, мы сбросить кэш приложения, как бы вернем его в исходное состояние.

    Если это не помогло, попробуйте перезагрузить компьютер и открыть приложение от имени администратора. А еще, отключите временно, но UAC учетных записей.

    Вышеперечисленные действия не помогли? Прочитайте статью Почему не работают приложения Windows 10, возможно, там вы найдёте ответ.

    Установка аналогичного калькулятора на Windows 10

    Чтобы скачать и установить аналогичный калькулятор, воспользуемся магазином Windows. Зайдите в него и введите в поиске соответствующее слово или фразу. В результатах вы увидите множество калькуляторов, некоторые из которых имеют больше возможностей, чем стандартное приложение.

    Второй вариант – ввести в поисковике ключевую фразу и найти какой-нибудь калькулятор для Windows. Например, есть программка – Old Calculator для Windows 10. Это приложение возвращает калькулятор от Windows 7. Думаю, кому-то это будет интересно.

    Скачать программу можно с официального сайта разработчика: http://winaero.com/blog/get-calculator-from-windows-8-and-windows-7-in-windows-10/. Там есть и другие полезные приложения для «десятки» и интересные статьи.

    Дополнительные действия, если не работает калькулятор Windows 10

    Если у вас возникла подобная проблемка, тогда выполните следующие действия:

    • Вспомните, что вы делали недавно в системе и приведите её в исходное состояние;
    • Запустите от имени администратор командную строку и введите команду: sfc /scannow .
    • Если результата не дало, в той же командной строке введите:
      DISM.exe /Online /Cleanup-image /Restorehealth – это восстановление образа системы.
    • Попробуйте создать другую учетную запись и открыть калькулятор там.
    • Удалите недавно установленные программы и отключите антивирус.
    • Используйте восстановление системы.

    Вот мы разобрали много действий, касающихся лишь одно приложения в такой большой системе, как Windows 10. Поэтому материалов еще будет очень много и не забывайте следить за выходом новых материалов.

  • Содержание

    • Способ 1: Сброс параметров приложения
    • Способ 2: Переустановка всех стандартных приложений
    • Способ 3: Включение контроля учетных записей
    • Способ 4: Запуск средства устранения неполадок
    • Способ 5: Отключение Брандмауэра
    • Способ 6: Использование утилиты SFC
    • Способ 7: Установка последних обновлений Windows 10
    • Способ 8: Переустановка Калькулятора
    • Вопросы и ответы

    Не запускается калькулятор в Windows 10

    Калькулятор — стандартное приложение семейства операционных систем Виндовс, которое позволяет пользователям быстро производить расчеты разного уровня. С работоспособностью данной программы редко возникают какие-либо ошибки, однако если они появляются, большинство юзеров просто не знает, как с ними справиться, поскольку такая ситуация нетипична и сталкиваются с ней редко. Мы постараемся дать развернутый ответ по теме решения неполадки, описав все доступные варианты решения, взяв за пример последнюю версию Windows 10.

    Читайте также: Поиск и открытие Калькулятора в Windows 10

    Способ 1: Сброс параметров приложения

    Начнем с самых простых и действенных методов, постепенно переходя к сложным и тем, которые реже оказываются эффективными в сложившейся ситуации. Первым на очереди выступит вариант, подразумевающий банальный сброс параметров приложения, что чаще всего помогает наладить его нормальное функционирование. Для этого пользователю потребуется выполнить всего несколько простых манипуляций.

    1. Откройте меню «Пуск» и перейдите в раздел «Параметры», кликнув по значку в виде шестеренки, который расположился на левой панели.
    2. Открытие меню Параметры для сброса настроек приложения Калькулятор в Windows 10

    3. Здесь вас интересует категория «Приложения».
    4. Переход к списку приложений для сброса настроек программы Калькулятор в Windows 10

    5. Дождитесь загрузки списка, опуститесь вниз и отыщите там «Калькулятор». Кликните по строке левой кнопкой мыши для открытия меню выбора.
    6. Поиск приложения Калькулятор в Windows 10 для сброса настроек через параметры

    7. Щелкните по кликабельной надписи «Дополнительные параметры».
    8. Переход к дополнительным параметрам приложения Калькулятор в Windows 10 для сброса настроек

    9. Сначала нажмите по «Завершить», чтобы закончить все процессы, связанные с Калькулятором, а затем на «Сбросить» для обнуления настроек.
    10. Сброс настроек приложения Калькулятор в Windows 10 через параметры

    11. Подтвердите сброс, повторно щелкнув по появившейся кнопке.
    12. Подтверждение сброса настроек приложения Калькулятор в Windows 10 через параметры

    Сразу же после этого вы получите сообщение о том, что данные приложения сброшены и оно готово к повторному запуску. Произведите эту операцию, чтобы убедиться в нормализации функционирования Калькулятора. Если это не принесло никаких результатов, переходите к ознакомлению со следующими инструкциями.

    Способ 2: Переустановка всех стандартных приложений

    Этот метод предполагает выполнение всего двух шагов, однако времени займет больше предыдущего, поскольку используемая утилита будет переустанавливать все классические приложения операционной системы. Вы не потеряете личные данные, поэтому можете не бояться выполнять следующие действия. Однако стоит заметить, что сам процесс займет более пяти минут и во время этого не рекомендуется производить других манипуляций на компьютере. В первую очередь запустите консоль «PowerShell» от имени администратора. Проще всего это сделать через контекстное меню, кликнув ПКМ по «Пуск».

    Запуск PowerShell для переустановки приложений при наладке работы Калькулятор в Windows 10

    После этого остается только ввести команду Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register «$ ($ _. InstallLocation) AppXManifest.xml»} и нажать по клавише Enter. Сразу же начнется переустановка компонентов. Не закрывайте окно и дождитесь появления информации об успешном завершении процедуры.

    Команда для переустановки приложений при отладке работы программы Калькулятор в Windows 10

    По окончании переустановки переходите к открытию Калькулятора, проверив тем самым корректность его работы.

    Способ 3: Включение контроля учетных записей

    Опция контроля учетных записей в Виндовс предназначена для предотвращения внесения изменений программами без ведома администратора. Иногда пользователи отключают ее из-за определенных целей, что не благоприятно влияет на функционирование стандартных приложений из магазина Microsoft, к которым относится и рассматриваемое сегодня. Мы рекомендуем проверить опцию контроля и включить ее, если это потребуется.

    1. Откройте «Пуск» и через поиск отыщите приложение «Панель управления».
    2. Переход в панель управления для наладки работы приложения Калькулятор в Windows 10

    3. Там выберите раздел «Центр безопасности и обслуживания».
    4. Переход в центр обслуживания для отладки работы приложения Калькулятор в Windows 10

    5. На левой панели кликните по надписи «Изменение параметров контроля учетных записей».
    6. Переход к настройкам контроля учетных записей при восстановлении приложения Калькулятор в Windows 10

    7. Поднимите ползунок на одно или два значения вверх, если он находится в самом нижнем положении, а затем щелкните на «ОК» для применения изменений.
    8. Включение контроля учетных записей при восстановлении приложения Калькулятор в Windows 10

    Если в будущем такие изменения не принесут положительного результата, вы можете точно таким же способом вернуть состояние опции контроля учетных записей пользователей в изначальное положение, чтобы не испытывать трудности с работоспособностью другого софта.

    Способ 4: Запуск средства устранения неполадок

    В Виндовс 10 имеется встроенное средство неполадок, позволяющее решить проблемы с работой установленных из магазина приложений. Мы рекомендуем запускать его только в том случае, когда вы уже выполнили приведенные выше рекомендации, поскольку оно само порекомендует сбросить данные Калькулятора или включить контроль учетных записей.

    1. Откройте меню Параметры уже знакомым способом и перейдите в раздел «Обновление и безопасность».
    2. Переход в раздел с обновлениями для запуска средства устранения неполадок с работой приложения Калькулятор в Windows 10

    3. Через левую панель переместитесь к категории «Устранение неполадок».
    4. Переход к средству устранения неполадок работы приложения Калькулятор в Windows 10

    5. Отыщите пункт «Приложения из Магазина Windows», щелкните по нему, а затем по появившейся кнопке «Запустить средство устранения неполадок».
    6. Запуск средства устранения неполадок работы приложения Калькулятор в Windows 10

    7. Ожидайте окончания сканирования. Эта операция не займет много времени.
    8. Процесс поиска неполадок работы приложения Калькулятор в Windows 10

    9. После этого на экране появятся рекомендации. Выполните их, чтобы решить возникшую неполадку, или просто следуйте отобразившимся инструкциям.
    10. Завершение работы средства устранения неполадок работы приложения Калькулятор в Windows 10

    Способ 5: Отключение Брандмауэра

    Мы переходим к методам, которые нечасто оказываются эффективными, но выполнить их стоит, если советы выше не принесли должного результата. Не всегда даже проверенные межсетевые экраны операционной системы функционируют должным образом. Иногда они мешают запуску доброжелательных программ, что может случиться и с Калькулятором. Проверить этот фактор можно только путем отключения брандмауэра. Что касается установленных сторонних межсетевых экранов, то на них детально останавливаться мы не будем, поскольку пользователь, установивший подобное решение, сам знает все об управлении им или способен прочесть официальную документацию. В случае со встроенным брандмауэром мы рекомендуем обратить внимание на отдельную инструкцию от другого нашего автора, перейдя по следующей ссылке.

    Отключение брандмауэра для отладки работы приложения Калькулятор в Windows 10

    Подробнее: Отключение брандмауэра в Windows 10

    Способ 6: Использование утилиты SFC

    Знакомая многим утилита SFC предназначена для проверки системы на ошибки, а также оперативного их исправления. Иногда такие системные сбои являются причиной отказа приложений запускаться, что может коснуться и Калькулятора. На нашем сайте имеется отдельный материал, где автор детально рассказывает о восстановлении файлов путем использования SFC и DISM, если это будет необходимо. Ознакомьтесь с ним и следуйте приведенному руководству, чтобы наладить работу ОС.

    Сканирование целостности файлов при восстановлении работы приложения Калькулятор в Windows 10

    Подробнее: Использование и восстановление проверки целостности системных файлов в Windows 10

    Предпоследний вариант заключается в установке недостающих обновлений, ведь иногда разработчики выпускают важные изменения, влияющие на общую работу компьютера. Возможно, после установки всех недостающих апдейтов проблема с запуском Калькулятора решится сама собой. Более детально об этом читайте, кликнув по одной из следующих ссылок.

    Подробнее:
    Установка обновлений Windows 10
    Устанавливаем обновления для Windows 10 вручную
    Решаем проблему с загрузкой обновлений в Windows 10

    Способ 8: Переустановка Калькулятора

    Напоследок поговорим о самом радикальном способе — ручной переустановке рассматриваемого софта. Иногда она помогает справиться со сбоем, но мы не можем этого гарантировать. Производите следующие действия только в той ситуации, когда уже выполнили все семь описанных выше методов и те оказались безрезультатны.

    1. Откройте «Параметры», например, нажав по соответствующей кнопке в меню «Пуск».
    2. Переход к параметрам для переустановки приложения Калькулятор в Windows 10

    3. Перейдите в раздел «Приложения».
    4. Переход к списку приложений для переустановки программы Калькулятор в Windows 10

    5. Отыщите там «Калькулятор» и откройте его дополнительные параметры.
    6. Открытие дополнительных параметров приложения Калькулятор в Windows 10

    7. Щелкните по «Удалить» и дождитесь полной деинсталляции ПО.
    8. Удаление приложения Калькулятор в Windows 10 через параметры

    9. Через поиск в «Пуск» отыщите «Microsoft Store» и запустите этот магазин.
    10. Запуск магазина для повторной установки приложения Калькулятор в Windows 10

    11. Найдите там страницу того самого классического калькулятора.
    12. Поиск приложения Калькулятор в Windows 10 в магазине для повторной установки

    13. Щелкните по кнопке «Get» («Получить»).
    14. Повторная установка приложения Калькулятор в Windows 10 через магазин

    15. По окончании инсталляции можете пробовать запустить приложение.
    16. Запуск приложения Калькулятор в Windows 10 после повторной установки

    Существует альтернативный вариант удаления стандартного приложения, если рассмотренный только что вам по каким-то причинам не подходит. Узнать о нем можно в отдельной статье на нашем сайте.

    Подробнее: Удаление встроенных приложений в Windows 10

    Это была вся информация по восстановлению Калькулятора, которой мы хотели поделиться в рамках этого материала. Если проблемы наблюдаются сразу же после установки ОС, особенно нелицензионной, вполне возможно, что именно в этой сборке программа отказывается работать корректно. Остается только использовать сторонние аналоги или искать другую сборку операционной системы.

    Большинство пользователей ПК воспринимают встроенное приложение «Калькулятор» в Windows 10 как должное, и почему бы и нет? это всего лишь пара щелчков мышью и всегда появляется в мгновение ока. Но, несмотря на то, насколько надежным он может показаться, калькулятор Windows не застрахован от проблем. В редких случаях он может зависнуть, дать сбой или вообще не открыться.

    Ошибки, сбои и поврежденные системные файлы являются ключевыми причинами, мешающими правильной работе калькулятора Windows.

    Если ваше приложение Windows 10 Calculator не работает, приведенные ниже советы по устранению неполадок и исправления должны помочь вам заставить его работать в обычном режиме.

    Калькулятор Windows — это приложение из Microsoft Store. Итак, вы должны начать с того, что попробуете встроенное средство устранения неполадок приложений Магазина Windows. Надеюсь, это быстро решит любые проблемы с приложением «Калькулятор».

    1. Откройте меню «Пуск» и выберите «Настройка».
    2. Выберите «Обновление и безопасность».

    3. Перейдите на вкладку Устранение неполадок и выберите Дополнительные средства устранения неполадок.

    1. Прокрутите вниз до раздела «Найти и исправить другие проблемы» и выберите «Приложения Магазина Windows». Затем выберите Запустить средство устранения неполадок.

    1. Следуйте инструкциям на экране, чтобы исправить любые проблемы, обнаруженные средством устранения неполадок приложений Магазина Windows.

    2. Обновите приложение «Калькулятор».

    Microsoft выпускает периодические обновления в виде исправлений ошибок и повышения производительности для калькулятора Windows. Если вы отключили автоматические обновления в Microsoft Store, это может привести к тому, что калькулятор Windows 10 не будет работать. Проверьте наличие нового обновления Калькулятора и установите его вручную.

    1. Откройте Microsoft Store.
    2. Выберите значок с 3 точками в правом верхнем углу экрана и выберите Загрузки и обновления.

    1. Щелкните значок «Обновить» рядом с Калькулятором Windows, чтобы установить все ожидающие обновления.

    После обновления проверьте, работает ли приложение «Калькулятор» без проблем.

    3. Перезагрузите компьютер.

    Перезагрузка Windows 10 удаляет устаревшие или избыточные данные и разрешает системные конфликты, которые мешают нормальному запуску приложений. Сделайте это, прежде чем переходить к остальным исправлениям.

    4. Сбросить калькулятор.

    Windows 10 позволяет сбросить калькулятор, удалив кешированные файлы и вернув приложение к настройкам по умолчанию. В большинстве случаев это должно навсегда исправить сбои, зависания или другие проблемы.

    1. Откройте меню «Пуск» и выберите «Настройка».
    2. Выберите Приложения.

    3. Выберите Калькулятор Windows. Затем выберите Дополнительные параметры.

    1. Выберите «Завершить», чтобы завершить все процессы, связанные с калькулятором.
    2. Выберите Сброс.

    1. Еще раз выберите «Сброс» для подтверждения.

    5. Перерегистрируйте калькулятор.

    Повторная регистрация проблемного экземпляра калькулятора Windows может помочь ему работать правильно. Вы можете сделать это удобно, используя консоль командной строки в Windows 10.

    1. Нажмите Windows + S, чтобы открыть Windows Search. Затем введите cmd и выберите Открыть.
    2. Скопируйте и вставьте следующую команду в консоль командной строки:

    PowerShell -ExecutionPolicy Unrestricted -Command «& {$ manifest = (Get-AppxPackage * WindowsCalculator *). InstallLocation + ‘ AppxManifest.xml’; Add-AppxPackage -DisableDevelopmentMode -Register $ manifest} »

    1. Нажмите Enter, чтобы повторно зарегистрировать калькулятор Windows.
    2. Закройте консоль командной строки.

    3. Перезагрузите компьютер.

    Если это не помогло в работе калькулятора Windows, попробуйте повторно зарегистрировать все приложения Microsoft Store на вашем компьютере.

    1. Щелкните правой кнопкой мыши Пуск и выберите Windows PowerShell.
    2. Скопируйте и вставьте следующую команду в Windows PowerShell:

    Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register «$ ($ _. InstallLocation) AppXManifest.xml»}

    1. Нажмите Enter, чтобы повторно зарегистрировать все приложения Microsoft Store.

    Как только Windows PowerShell завершит процедуру, выйдите из нее и перезапустите Windows 10.

    6. Переустановите калькулятор.

    Если у вас по-прежнему возникают проблемы с калькулятором Windows, пора переустановить приложение вручную.

    1. Щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Приложения и функции».
    2. Выберите Калькулятор.

    3. Выберите «Удалить», чтобы удалить калькулятор Windows.

    1. Откройте Microsoft Store.
    2. Найдите Калькулятор Windows и выберите Установить.

    7. Обновите Windows

    Более новые версии Windows 10 обычно предлагают собственные и сторонние приложения, которые являются наиболее стабильной средой для работы. Если вы давно не обновляли свой компьютер, попробуйте сделать это сейчас.

    1. Откройте меню «Пуск» и выберите «Настройка».
    2. Выберите «Обновление и безопасность».

    3. Выберите «Проверить наличие обновлений» и выберите «Загрузить и установить», чтобы применить все ожидающие обновления Windows 10.

    8. Запустите сканирование SFC.

    Если поврежденные системные файлы являются причиной того, что калькулятор Windows не работает на вашем компьютере, сканирование SFC (System File Checker) должно помочь в этом.

    1. Нажмите Windows + S, чтобы открыть Windows Search. Затем введите cmd и выберите Запуск от имени администратора.
    2. Введите sfc / scannow в консоли командной строки с повышенными привилегиями и нажмите Enter.

    1. Дождитесь завершения сканирования SFC и после этого попробуйте использовать приложение «Калькулятор».

    9. Запустите сканирование DISM.

    Если сканирование SFC не помогло, вам следует пройти дополнительный шаг и выполнить DISM (обслуживание образов развертывания и управление ими) сканирование вместо. Процедура может занять до часа, поэтому убедитесь, что у вас достаточно времени, прежде чем выполнять следующие шаги.

    1. Откройте консоль командной строки с повышенными привилегиями.
    2. Введите следующую команду и нажмите Enter:

    DISM / Онлайн / Очистка-Образ / CheckHealth

    1. После того как DISM завершит сканирование вашего компьютера, продолжайте выполнять следующие команды:

    DISM / Онлайн / Очистка-Изображение / ScanHealth

    DISM / Онлайн / Очистка-Образ / RestoreHealth

    10. Сбросить Windows 10

    Калькулятор Windows 10 все еще не работает на вашем компьютере? В таком случае рассмотрите возможность сброса Windows 10 до заводских настроек. Это должно вернуть все системные настройки к их значениям по умолчанию и устранить любые основные проблемы, вызывающие сбои в работе приложения «Калькулятор».

    Сброс Windows 10 до заводских настроек — это крайняя мера, поэтому перед продолжением необходимо создать резервную копию своего компьютера. Как только вы это сделаете, выполните следующие шаги, чтобы начать процедуру сброса.

    1. Откройте меню «Пуск» и выберите «Настройка».
    2. Выберите «Обновление и безопасность» и перейдите на вкладку «Восстановление».

    3. Выберите «Начать».

    Чтобы получить полное пошаговое руководство, ознакомьтесь с этим руководством о сброс Windows 10 до заводских настроек.

    Вы установили приложение «Калькулятор»

    Во многих случаях сброс, повторная регистрация или повторная установка калькулятора Windows — это все, что требуется для правильной работы приложения.

    Однако, если ни одно из вышеперечисленных исправлений не помогло, рассмотрите возможность использования другого приложения-калькулятора, по крайней мере, пока Microsoft не исправит какие-либо проблемы с приложением «Калькулятор». Вы можете найти множество сторонних альтернатив только в Microsoft Store.

    Устраняем глюк калькулятора в Windows 7

    Глюк калькулятора в Win7Глюк калькулятора в Windows 7

    После установки различных программ, игр и приложений в операционной системе Windows 7 некоторые пользователи сталкиваются с проблемой. Заключается она в некорректной работе одной из стандартных программ – калькулятором.

    Проблема с калькулятором в Windows 7 заключается в том, что поле отображения вводимых цифр имеет половинный размер и каждое вновь вводимое значение наслаивается на предыдущее. В таком случае считать полученные данные чрезвычайно сложно, а порой и невозможно.

    Глюк стандартного калькулятора
    Ошибка стандартного калькулятора в Windows 7

    Данный глюк калькулятора в Windows 7, как правило, появляется после установки различных приложений и программ, таких как игры, например. Особенно это имеет место, если программы, мягко говоря «взломанные», то есть нелицензионные.

    Несмотря на то, что стандартный калькулятор нужен не всегда и необходимость им воспользоваться возникает довольно редко, всё же огорчает тот факт, что его в необходимых случаях нет под рукой.

    Поэтому рассмотрим процесс, с помощью которого можно устранить глюк калькулятора в Windows 7.

    Причиной возникновения «урезанного» окна в калькуляторе является замена стандартных шрифтов на другие при установке какой-либо программы. Именно из-за этого и происходит неправильное отображение окна ввода и путаница цифр.

    Для того чтобы устранить проблему, необходимо восстановить первоначальные значения в реестре операционной системы.

    Процедура эта совсем не сложная, но довольно ответственная. Как известно, в реестре хранятся настройки операционной системы, и неправильное редактирование значений реестра может обернуться её неработоспособностью. Поэтому производить все операции необходимо аккуратно и точно.

    Итак, для редактирования реестра в Windows 7 нужно запустить редактор реестра. Делается это также как и в Windows XP:

    «Пуск» – «Все программы» – «Стандартные» – «Выполнить». Появиться окно «Выполнить».

    Программа "Выполнить"
    Стандартная программа «Выполнить»

    В него вводим название программы, которую хотим запустить – regedit.exe – жмём «ОК».

    Запуск "Редактора реестра"
    Запуск «Редактора реестра»

    Появиться окно программы «Редактор реестра».

    Окно "Редактора реестра"
    Окно «Редактора реестра»

    Далее щёлкаем на стрелочки рядом с папкой. При щелчке будут показаны вложенные папки. Таким образом, следуем по пути:

    «HKEY_LOCAL_MACHINE» – «SOFTWARE» – «Microsoft» – «Windows NT» – «CurrentVersion». Далее находим папку «FontSubstitutes» и кликаем по ней. В правой части окна будут показаны параметры и значения. Их то мы и будем редактировать.

    В правой части окна в алфавитном порядке будут показаны параметры. В колонке «Значение» будут указаны присвоенные шрифты. В колонке «Имя» находим MS Shell Dlg,204.

    Внимание! Надо найти именно этот пункт! Здесь легко допустить ошибку, так как рядом будут другие параметры с похожим названием (MS Shell Dlg; MS Shell Dlg 2; MS Shell Dlg,0). Изменять значение необходимо у параметра MS Shell Dlg,204 иначе результата не будет.

    Параметр реестра
    Параметр реестра «MS Shell Dlg,204»

    Изменяем значение с MS Sans Serif,204 на Microsoft Sans Serif,204. Для этого щёлкаем правой кнопкой мыши на MS Shell Dlg,204 и выбираем пункт «Изменить…». Откроется окно «Изменение строкового параметра». В поле «Значение» вводим Microsoft Sans Serif,204. Изменяем MS на Microsoft.

    Изменение строкового параметра
    Изменение строкового параметра

    Для того чтобы изменения, внесённые в реестр вступили в силу – перезагружаем компьютер.

    Затем проверяем, пропал ли глюк калькулятора. Если всё сделано верно, то, как правило, проблема устраняется, и калькулятор восстанавливает свою прежнюю работоспособность.

    Главная » О Компах » Текущая страница

    Также Вам будет интересно узнать:

    • Как сменить стандартные звуки Windows?

    • Бесплатный антивирус для пользователей Windows 7!

    • Методика разделения диска C:/ в Windows 7.

    Понравилась статья? Поделить с друзьями:
  • Ошибки кейс 550
  • Ошибки калина приборная панель расшифровка
  • Ошибки кейс 350
  • Ошибки калина 1 на приборке расшифровка
  • Ошибки кдл лаборатории