Windows annoyance #342: Everything goes to the C drive

Windows annoyance #342: Everything goes to the C drive

Summary: Sometimes the sheer pain of dealing with Windows' quirks, 'features', and various anomalies is just about more than any sane person can bear. The fact that everything goes to the C drive drives me crazy and after 20+ years with Windows, that drive is pretty short.

SHARE:
199

Have you ever wondered just what the heck is up with every bit of software that's made by Microsoft defaulting to the C: drive? I don't hate Microsoft. No, seriously, I really don't. I like the company, the operating systems, and the applications today more than ever before. In fact, if you've read my last few Microsoft-oriented posts, you'd think I'm in love with that particular Washingtonian. And yes, among other things, I'm a Wintel Administrator, but truth be told, there are some things about Windows that makes me want to personally "whack" some of the developers. And by whack, I don't mean backslash, although that's not a bad move.

Microsoft should take a hint from the UNIX/Linux world in that the system partition should be kept small and relatively unchanged. For those of you in that world, you know what I'm talking about. The / directory is sacred. As a separate volume, it's small and almost never changes. It shouldn't.

That's what /var is for. Hasn't Microsoft ever heard of UNIX or Linux? Sure they have. But just in case, I'm going out on a limb here and giving Redmond a message from the heart.

STOP PUTTING STUFF ON THE C: DRIVE.

I hope that isn't too subtle. The only things that really belong on the C: drive or C: partition are the operating system and the pagefile, although the location of the pagefile can be debated.

Here's my problem in a nutshell.

If you build a new system, virtual or physical, shouldn't 35 or 40GB be enough for a system partition? You'd think so wouldn't you?

But it isn't.

It's not enough.

The C: drive just keeps growing and growing and growing.

Most of it is kept in that C:\Windows\winsxs directory. My current winsxs directory is just over 20GB in size. On my C: drive.

Here's a big tip for Microsoft: LET ME CHOOSE WHERE TO PUT THE WINSXS DIRECTORY.

Wouldn't it be smarter for a leveraged server environment, where you have hundreds or thousands of servers, for the winsxs directory to be located on a shared SAN drive? Sure it would. Provide me a tool or an option to move it. I don't want to burn 20+ GB of space on drivers and whatever else is in there. Don't make me keep that stuff where I don't want it.

Also, don't automatically place the pagefile.sys and hibernate files on the C: drive. Let me choose those locations as well.

And, as a side note, do we really need a pagefile or hibernate on server systems that run 24x7x365 and that have plenty of RAM? No, I don't think so either. Let's let those things all be optional and editable.

Also, when installing new software, allow me to select where the files are stored. Oh, I know that I can tell software application X that I want it to install to D:, E:, or whatever but there are still dozens of files that write to C:. I don't want that. I want them all on D: or E: or whatever drive I decide. Don't write anything to C: unless it's a log file for that installation. And that file's location should even be optional.

I'm tired of fighting space problems on C:. Do you know how difficult it is to repartition a system partition or C: drive? Well, it's hard. Trust me. And it's no easier if it's virtual.

I understand that it's next to impossible for Microsoft to anticipate real world scenarios for its operating systems and applications but come on, this isn't your first rodeo. You've been around long enough to realize that disk space is still at a premium and that your customers have to pay for that SAN space. 

The C: drive thing has been a major thorn for those of us in support for many years. Consider this a formal protest. I'm here to represent my brothers and sisters of the Wintel System Administrator ilk. I have your collective back. Get on board with this.

The C: drive is sacred. It is the Windows equivalent of /. Stop putting stuff there. Take that one shred of wisdom from the UNIX world. Separate your partitions. Limit the amount of stuff that gets written to certain directories. Allow us, the real worlders, to decide where to put apps, libraries, logs, and files. Keep applications and their associated files all together under a single directory tree. Please simplify our lives, I beseech you.

I don't beseech very often but I beseech thee Microsoft, giveth us control of our C: drives, giveth us options, and giveth us some freedom from the constant fight for space on the system partition.

Please remove Windows Annoyance #342 from my list. Let's replace it with the whole rebooting thing after every update or installation of a new service, which incidentally are Windows Annoyances #343 and #344. Consider yourself beseeched.

What do you think? How many times have you run into this very problem? How have you resolved it? Talk back and let me know.

Topics: Microsoft, Software, Windows

About

Kenneth 'Ken' Hess is a full-time Windows and Linux system administrator with 20 years of experience with Mac, Linux, UNIX, and Windows systems in large multi-data center environments.

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

199 comments
Log in or register to join the discussion
  • RTFM

    You can relocate documents, downloads, music and such. Just right-click on My Documents (for example) and choose "Location" and type in where you want them to be. Then click "Move". Not only will it move the stuff, but it will update the registry so the "My Documents" virtual link still works. Now if a lazy coder has hard-coded the default document path, shame on them.

    Same can be done with the swap file too. You can look that one up.

    As for program installation, I don't care. All I want is a GOOD uninstall package that really DOES remove it all...PLEASE!!!
    jwspicer
    • Have you ever heard of GAC

      Then you'd understand the article.

      Or say system or system32 directories, oh yeah in reference to the GAC, how about your registry? I could go on with the event viewer and other annoyances, not worth the time.

      The author is correct, and over 20 years later, MS still falters at understanding one basic windows flaw.
      Uralbas
      • actually win2k was more advanced this way

        It was easier to move the 'users' and default program files directories in win2k than it is today -because microsoft, in their infinite wisdom, simplified it for us... *Win8 anyone?* #fail.
        John Stegenga
      • What is GAC?

        I'm not familiar with it.
        ye
        • Global Assembly Cache

          This is a new Windows\system32 for .NET applications.
          Shank104
          • Thanks. I looked it up.

            Not sure what relationship it has to the article.
            ye
          • Well, I do

            Just like in the old days (and still happens today, particularly if you need to deal with a lot of legacy applications) every time you installed a shared DLL it would go to C:\Windows\System32 (and also C:\WINDOWS\SysWOW64 on 64 Bit systems)

            Since Vista, there's also the C:\Windows\winsxs (aka the Side by Side Assembly directory) which the author mentioned, see here: http://en.wikipedia.org/wiki/Side-by-side_assembly

            In the Disadavantages Section:

            Considerably higher disk space consumption. The winsxs directory typically starts at several gigabytes in size and continues to grow as applications are installed. Further, there is currently no supported way to significantly reduce the size of the winsxs directory

            In other words, that directory just grows and grows and there's no easy way to trimm it.

            Not to mention that the Service Pack Uninstall Files go on C:\Windows as well, and those are a good chunk of disk space as well
            Imprecator
          • Because it throws stuff on your C drive

            In Windows, third party devs often deliver runtimes (from Microsoft, others, and even themselves) that need to act as though they are part of the operating system. For .NET based code, that means the GAC.

            The author's premise that an OS should have a small fixed boot partition obviously would not work with this sort of thing.
            Mac_PC_FenceSitter
          • Windows HAS

            A small fixed boot partition, it is 100 MB for 2008 and 2008R2 and a bit larger for 2012 and 2012r2.
            sjaak327
      • What is wrong with C: Drive ?

        We should commend Microsoft for consistency ... they put everything on C: drive at least it is easy to find. And if Microsoft made it this way it has to be good ... what is wrong with you people ?
        keruzam
        • C:/ Drive

          You must don't do any updates or you would know that all updates from microsoft goes to the c drive and if you don't have a large drive your bound to run out of space, every install goes to c drive by default.
          sirlknig@...
    • @jwspicer

      No, it's not about moving that stuff, that's easy. It's about moving winsxs. Check yours and then try to move it. Be prepared to reimage your system. Please make a backup first.
      khess
      • Perhaps it would be wise of you to understand what winsxs is before...

        ...you decided to mess with it. If you knew what it was you'd know you were effectively trying to move the OS off of the OS drive.
        ye
    • That isn't a full solution

      Ken doesn't even mention home directories/user profiles in his rant. You cannot move "Program Files" or winsxs so easily, and those are just as important to segregate from the OS partition as anything else. The only way to do the same with "Program Files" is to always pick "custom" when you install something and make sure to puck an alternative location. If you mess up or you get a poor installer that doesn't let you control install destination fully then you have clutter on C: drive.

      Also what about program settings? They can be scattered in the registry, in xml-formatted .config files in the user profile or an old-school .ini file. And, you cannot control the location of the registry files easily either--at least with config in files you can have some control of that.

      This is where UNIX-style OSes have it better. Of course, the "standards" for filesystem arrangement in UNIX are rather fragmented and sometimes baffling, but the architecture is certainly better. The main reason it is such a challenge in Windows is because it hangs on to that antiquated CP/M-era legacy of drive letters to maintain compatability with stupid software that requires them. UNIX style OSes have one consistent filesystem where devices are given mount points. If a partition fills up you can copy all the data from a large directory onto a new drive or partition where there is space, remove the old directory and mount the new partition at the same path and you're done. Drive letters make that impossible--you move some data to new partitions and your path must change because the drive letter must be different.

      MSFT realises this of course because they eventually gave their NT based OSes the ability to mount a drive/parition at a directory location rather than just at a drive letter, so now you CAN technically move things like C:\Program Files to another drive or parition (I have done so--but it is VERY tricky to do it without messing up). That said, you still have a C: "drive" but now the C: is nearly meaningless because you can have other drives mounted at directory locations within, so it is not only kind of hidden/tricky it is also confusing to the user, which is why the feature is very rarely used.

      Retaining drive letters makes no sense. If MSFT is going to mess with its UI so completely as it has with Windows 8 why do they still keep drive letters? They need to ditch drive letters some day.

      I do agree with you though on application management. Why does Windows STILL not have a proper package management infrastructure? Linux OSes have been using consistent package management for FIFTEEN YEARS! If there is anything MSFT should've "embraced and extended" it is probably APT, YUM or URPMI. But no, we have "setup.exe" and "add/remove programs" that are similar but different for every program and a REAL full uninstall is STILL not possible in Windows. It should be addressed, but it probably will not be. I fully expect MSFT to force feed their users TIFKAM* apps from their closed iTunes wannabe store, so such ability to easily and properly add, remove and update apps will be limited to those.

      * TIFKAM == The Interface Formerly Known As Metro
      Mark Hayden
      • relocation of Program Files

        ...You cannot move "Program Files" or winsxs so easily, and those are just as important to segregate from the OS partition as anything else. The only way to do the same with "Program Files" is to always pick "custom" when you install something and make sure to puck an alternative location. If you mess up or you get a poor installer that doesn't let you control install destination fully then you have clutter on C: drive...

        When I noticed my C: drive getting perilously close to full, I did a bit of research and found a pretty easy--if time-consuming--way to copy my Users/, Program Files/, and Program Files (x86)/ directories to a different physical drive. The key is to symlink (I *think* that's the correct term) the directories on C to their new physical locations. Then, when you install software, you just install it to C:/Program Files/, and the OS dutifully installs it on what it *thinks* is C: but is actually D:/ or U:/.

        Thing is, this breaks Windows Update. But there's a registry mod you can perform to make Windows Update work within this setup. I've been running like this for a couple years now, with no problems to speak of. It's not optimal--when my SSD boot disk dies, having Program Files on a separate drive isn't going to help--I'll still need to reinstall everything because the registry will go with the drive. But the Users directory should be safe.

        I don't know whether there's anything special about winsxs that would prevent its relocation, but on the other hand, I don't know whether it's even desirable to relocate it away from the rest of the OS.
        HiramQPustule
        • WinSXS iIS the operating system.

          "The WinSxS folder is the only location that the component is found on the system, all other instances of the files that you see on the system are “projected” by hard linking from the component store. Let me repeat that last point – there is only one instance (or full data copy) of each version of each file in the OS, and that instance is located in the WinSxS folder. "

          http://blogs.technet.com/b/askcore/archive/2008/09/17/what-is-the-winsxs-directory-in-windows-2008-and-windows-vista-and-why-is-it-so-large.aspx

          I think I'm beginning to understand why so many people here are having problems with Windows. They're trying to optimize the OS without an understanding of what they're doing.

          "When I noticed my C: drive getting perilously close to full..."

          In the days of 1 terabyte hard disks there's no reason for the C: drive to become "perilously close to full". Here's some helpful advice to you: Stop trying to optimize it.
          ye
          • Ye...

            Would you buy me a 1 terabyte SSD? Pretty please?
            techadmin.cc@...
    • RTFA

      Did you not see the verbose list of stuff that goes on the C: drive? Just because you can pick out one or two things that are easy to use does not refute the entire article.
      someoneblah
  • And the fact that Windows does not properly uninstall all programs

    and so you need "a good uninstall package" is not good!
    Wakemewhentrollsgone
    • Windows doesn't uninstall programs

      Windows itself does not uninstall programs.
      ye