Posted: . At: 10:38 AM. This was 3 years ago. Post ID: 14917
Page permalink. WordPress uses cookies, or tiny pieces of information stored on your computer, to verify who you are. There are cookies for logged in users and for commenters.
These cookies expire two weeks after they are set.


One annoying feature in modern Ubuntu distributions.


The only annoying feature in the modern Ubuntu release is the automatic updates, this blocks me when I want to install a package as the package lock is held by the updater. I wish it would pop up a notification or even a small progress bar on the panel in MATE or Gnome to tell the user how the update is going, instead of having to run ps ax over and over until it is finished. But this is a small thing. The automatic updates are not that bad. Windows has to wait until it is shutting down to process updates before the machine can switch off. So there are advantages to the Linux way of doing things. There must be a reason that Windows can not properly process updates until it is shutting down. But it should be fixed. Windows 10 does not work too differently than Windows 7. It would be a massive amount of effort to write a whole new Windows Operating System from scratch. But it would be worth it in the long run. A massive risk though, considering the time it would take, as well as the man-hours involved in design and programming to create this.

Would Microsoft even consider such a massive undertaking? This would make news for sure and would be more secure if they used all-new secure programming practices. And having no legacy code at all in the new operating system. It would be the rebirth of the Windows OS for a new generation. So why not consider this move? I guess it would cost too much and be way too much work, better to manage the massive Windows 10 codebase instead. There are 50 million lines of code in Windows 10, which is a massive undertaking to audit for bugs and security holes, but I guess it is all compartmentalized. Certain programmers work on certain parts of the code and do not worry about the other parts. At least that is how I imagine it works at Redmond WA. Windows has a lot of code that was unused, there was Startpage, a Windows 8 style start menu for Windows XP, and a version of Notepad that was meant for editing HTML. This was called Newpad. Of course, we have Visual Studio Code now, so no matter. But this is still very interesting. Windows XP still had the old Program Manager from Windows 3.1 in it, this is seriously old-fashioned. But the source code of Windows XP has leaked a while ago, so using it now is crazy. The security holes are out in the open for anyone to find.

Part of the dcpromo source code from Windows XP. This might not have changed much since.

// Return false if the local machine's DNS hostname is bad, also pop up an
// error dialog.  Return true if the name is OK.  A bad name is one we believe
// will have problems being registered in DNS after a promotion.  The user
// must fix a bad name before proceeding.
 
bool
IsComputerNameOk()
{
   LOG_FUNCTION(IsComputerNameOk);
 
   bool result = true;
 
   do
   {
      State::RunContext context = State::GetInstance().GetRunContext();
      if (
            context == State::BDC_UPGRADE
         || context == State::PDC_UPGRADE
         || context == State::NT5_DC
         || !IsTcpIpInstalled() )
      {
         // If the machine is already a DC, then we don't worry about the name.
         // 
         // If the machine is a downlevel DC undergoing upgrade, then the name
         // can't be changed until dcpromo is complete.  So, we say nothing now,
         // but remind the user to rename the machine in the Finish Page.
         //
         // If TCP/IP is not installed, then the machine has no hostname
         // to check.  In this case, we will check for that with the
         // InstallTcpIpPage
 
         ASSERT(result == true);
 
         break;
      }
 
      // Then check the computer name to ensure that it can be registered in
      // DNS.
 
      String hostname =
         Win::GetComputerNameEx(::ComputerNamePhysicalDnsHostname);
 
      DNS_STATUS status =
         MyDnsValidateName(hostname, ::DnsNameHostnameLabel);
 
      switch (status)
      {
         case DNS_ERROR_NON_RFC_NAME:
         {
            INT_PTR dlgResult = 
               NonRfcComputerNameDialog(hostname).ModalExecute(0);
 
            switch (dlgResult)
            {
               case NonRfcComputerNameDialog::CONTINUE:
               {
                  // continue on with the non-rfc name
 
                  ASSERT(result == true);
 
                  break;
               }
               default:
               {
                  // close the wizard and rename.
 
                  result = false;
 
                  // after calling this, we must not allow any promote
                  // operation.  We will fall out of this function, then
                  // end the app.
 
                  LaunchNetId();
                  break;
               }
            }
 
            break;
         }
         case DNS_ERROR_NUMERIC_NAME:
         {
            result = false;
 
            String message =
               String::format(
                  IDS_COMPUTER_NAME_IS_NUMERIC,
                  hostname.c_str());
 
            BadComputerNameDialog(message).ModalExecute(0);
 
            break;
         }
         case DNS_ERROR_INVALID_NAME_CHAR:
         case ERROR_INVALID_NAME:
         {
            result = false;
 
            String message =
               String::format(
                  IDS_COMPUTER_NAME_HAS_BAD_CHARS,
                  hostname.c_str());
 
            BadComputerNameDialog(message).ModalExecute(0);
 
            break;
         }
         case ERROR_SUCCESS:
         default:
         {
 
            break;
         }
      }
   }
   while (0);
 
   LOG(result ? L"true" : L"false");
 
   return result;
}

Do you still want to use Windows XP now?


Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.