Installing Games on Windows Vista+

From Nexus Mods Wiki
Revision as of 21:32, 21 July 2019 by Dubiousintent (talk | contribs) (Solution for Steam Games: minor clarification)
Jump to: navigation, search

Overview

It is strongly advised with any version of the Microsoft Windows operating system from Vista and later, to install all games (including those run via Steam) to a games folder (such as 'C:\Games', but the actual name doesn't matter) but outside of the 'C:\Program Files' [and 'C:\Program Files (x86)' on 64-bit versions of Windows] folder trees. The "Program Files" folder trees are regarded as "system folders" and given special 'anti-malware' protections against alterations once installed. This is usually not accounted for by the game, and causes problems.

(FYI: 64-bit versions of Windows install 64-bit programs to the 'Program Files' folder tree and 32-bit programs to the 'Program Files (x86)' folder tree. Virtually all games running under Windows are still written as 32-bit programs at this time. Only if the game requirements specifically call for a 64-bit version of the OS will they be written to take advantage of that environment.)

Do not install them to the "C:\Users\<your_account_name>" folder tree either, as Windows will refuse to allow any executable to run from that location as an "anti-malware" precaution.

Background

Why, you ask?

Starting with Vista, after decades of telling developers to put everything into 'Program Files' folders, INIs, and the registry, MS changed the rules in response to malware making a mockery of their 'system security'. So in response they locked down those same areas they have been telling developers to utilize. Consequently to make changes to anything in the 'Program Files' folders, or INI files, or the registry, you had to have 'administration credentials', which they have for the same decades been telling everyone to not use for routine, daily use. Now, whenever a program tried to update the it's INI file, the UAC (see below) popped up and told you 'Uh-uh, tell me the password for an administrator (admin) account first'. But only programs written specifically for the Vista and later environments were prepared to deal with such an interruption to their control of all 'their' assets. Older programs just have fits. [Edit: Fortunately, most programs don't make changes to these areas after installation. But those that track 'status' in INI or other files in those locations don't fare well.] Games have additional problems because they often have to violate what MS considers 'good behavior' to achieve acceptable performance, which makes them look like malware in those 'secured' areas.

Some players think disabling the User Account Control (UAC) will solve the problem. That just disables the prompting to provide admin credentials. You still need to run as an 'admin account', which is suicidal if you have a connection to the internet. (See the definition of 'malware' and why MS resorted to locking things down in the first place. Think they won't bother with your home box? Ever hear of 'bot-nets'? Dozens of them, with millions of home computer slaves each under their control. Automatically probing and infecting any computer they can see. Routinely run as admin and 'resistance is futile; you WILL be assimilated', no matter what other precautions you take. They only have to 'get lucky' once and you have already given them the keys to the kingdom.)

Even when using 'admin credentials' you can still run into issues. The reason is that anything that is installed in the 'Program Files' folders are treated (whether flagged or not) as 'Read Only' by the system. Attempts to alter files located there are likely to be considered malware attempts, even when by an admin account. This is a protection mechanism. If you try to turn off the protection settings, it will reassert them the first chance the OS gets. If you do succeed in making an alteration to a file, the changed file is actually located in a 'shadow file' under your account name's AppData folder. A 'shadow file' is basically where the system redirects the request for the original file, as long as the approved API called are used. Games and applications do not always use the 'approved' API calls. Even if you get around it, you're fighting a security design that will mostly likely get restored in a later update. It's a never ending headache.

So, the preferred, least trouble solution is to install older programs, and especially games, somewhere other than in either of the 'Program Files' folder trees. On a completely separate drive (either physical or logical) is just fine, as long as that is where the app is installed. You can create a 'Program Files' folder on another drive and install all your older apps and games there without any of the problems with those folders on the C: drive. Don't try to move the programs there after installation without changing the registry. Much better to uninstall and reinstall in that case.

Solution for Steam Games

  • When installing your first Steam game, choose a location other than the default "C:\Program Files" (e.g. "C:\Games") instead for your "\Steam" SteamLibrary folder. DO NOT install under the "C:\Users" folder tree. Because malware can always locate and write files into there, Windows prevents ANY executable located under "C:\Users" from running.

Otherwise, you will have to move the Steam folder as follows: (Please read everything before attempting.)

  • See Moving a Steam Installation and Games for the official Steam Support instructions.

    You can only have ONE SteamLibrary folder per drive letter, so if you have any Steam games installed under the "C:\Program Files" folder tree, you will have to move all of them to the new folder.

    Experience has shown you need to supplement those instructions with the following:
    • Uninstall any game specific modding tools you have installed. Tools generally set their own registry keys to where game paths are found (using the games own registry keys), and install some kind of uninstaller. If you don't clean them up first, they will point to the wrong paths after the move.
    • You have to actually create a new SteamLibrary folder from within the Steam client first; before moving the Steamapps folder according to the above article.
      • On the Steam client: click Steam | Settings | Downloads | Steam Library Folders | Add Library Folder | Find.
      • Select the folder where you want to put the new Steamlibrary folder in (i.e. "D:\Games"), and then select New Folder. You can then rename this folder (i.e. "D:\Games\Steam") and hit "OK" and then press "Select".
      • Make sure your "Users" group has "Full Control" of this new "games" or "\Steam" folder. If you don't know how to do this, search the internet on your version of Windows and "folder permissions" (e.g. "Win10 folder permissions") or see the MS "File and Folder permissions" article. Do this before you attempt to move any existing files. You can now install games (and tools) in this new folder and they will "inherit" those permissions.
      • Be sure a separate subfolder for each game (and any tools that don't require placement in the game folder) is created. If you try to uninstall at a high level folder (like "D:\Games\Steam" or, heaven forbid: "C:\") the OS and Steam will ruthlessly strip out everything under that folder. There is no way to stop the process once it starts, so you want to be able to point to a single folder for uninstalling a game or tool.
  • See the wiki article Steam and mods for instructions on how to set up your Steam account to work with mods.

Windows 8.1 and later with Secure Boot

The "Exception code: 0xc0000005" error (in this case generated by the game executable), is a fairly common one which can be broadly categorized as a "STATUS_ACCESS_VIOLATION exception". Basically it means the program tried to access some portion of system memory outside of that allocated to it. (This is historically not that uncommon with many games as well as malware.) This is not desirable behavior as it often leads to corruption of other programs already in memory and eventually to untraceable, sporadic, strange errors and "crashes-to-desktop" (CTDs) even though the original offender appears to suffer no ill effects otherwise.

This "STATUS_ACCESS_VIOLATION exception" can be detected by the default settings of the Data Execution Prevention (DEP) set, which is both hardware and software designed to prevent malware. See this MS article for instructions on how to adjust this. You may want to turn DEP off for your specific games that encounter this error (i.e. exclude "<path>\Steam\steamapps\common\XCom-Enemy-Unknown\XEW\Binaries\Win32\XComEW.exe" from DEP, for instance). It is recommended doing so only on a case-by-case basis. Completely disabling DEP just makes it too easy to get infected and disables a valuable tool for tracking down the source of errors.

None of this is particularly new. However, it did lead to the discovery that the latest hardware being distributed with Win 8.1 installed now includes a set of hardware and software called "Secure Boot", which is implemented in the BIOS firmware. This is totally under the control of the hardware manufacturer and is designed to prevent malware root-kits from getting a foothold on your system by preventing anything not approved by the vendor from booting the system. This is a good thing, but the DEP control is by necessity and design under the control of this "Secure Boot" as well. This can mean you as the "owner" of the system have no access to adjust the DEP setting. In that case, you will have to speak with the technical support side of your hardware vendor as to whether it is possible to make any such adjustment.

For more information about "Secure Boot", see this Microsoft Technet article.

Troubleshooting

Finally, if you have problems with installing a mod see the following wiki article. Note that this document is one of those it will refer you to, so you might as well start by reviewing the material here.

Too Long; Didn't Read (TL;DR)

Really? (This is almost as long as the rest of the article.)
Okay, here it is laid out as simple reasons/steps.

Why having games installed to the default location is a problem:

  • Windows tries to prevent any changes to "system protected files" once they are installed.
  • "System protected files" includes anything installed under the "C:\Program Files" or "C:\Program Files(x86)" folder trees.
  • DO NOT install under the "C:\Users" folder tree. Because malware can always locate and write files into there, Windows prevents ANY executable located under "C:\Users".
  • Even programs installed under "system protected files" can't change their own files, including INI files. They actually change "shadow file" copies which are stored elsewhere and intentionally difficult to find.
  • Older games don't realize this in their design, and have problems as a result. This can't be "fixed".
  • Some people think they can get around this problem by running as administrator or changing security settings, but Windows is persistent in restoring it's "protections" when it updates. Fighting with the security design is a waste of time and frustration when moving the games is simpler.

Solution:

  1. Create a "C:\Games" folder. This could be on any other partition/drive letter, but assuming you only have one drive then it will be on "C:". The important thing is it must NOT be under any other folder.
    Make sure your "Users" group has "Full Control" of this folder. If you don't know how to do this, search the internet on your version of Windows and "folder permissions" (i.e. "Win10 folder permissions").
  2. Open your "Steam Client" (i.e. "connect to Steam").
  3. Now follow the Steam guide Moving a Steam Installation and Game instructions for "How do I change the default installation path for my games?"
  4. Then follow the next set of those instructions: "How do I move my existing Steam Installation?"
  5. You do not need to move your "Save Games", because they are remaining on the same hard drive ("C:").
  6. My supplemental instructions are pointing out that you have to use the "Add Library Folder" button in step 3 before you attempt to "move" the existing game in step 4. Also that any modding tools (like xEdit) may have to be re-installed.

If you are bothered by step 4, then you can just uninstall the current game through the "Windows Control Panel | Add/Remove Programs", and when you re-install after completing step 3, it should be installed to the new location. Again, your save game files should be safe, but you will need to rename any INI files in the "C:\Users\<YourAccountName>\Documents\My Games\<game folder>" folder, and let the game rebuild them.

References

Referred to by this article:

That refer to this article: