text: MS Suggests Using Shims For XP-To-Win7 Transition 316
  eldavojohn writes "Windows XP (and a lot of MS OS code before that) had a fundamental security flaw whereby the default setting made the ordinary user run as the superuser. Vista & Windows 7 have fixed that and implemented The Correct Paradigm. But what about the pre-Vista applications written to utilize superuser privileges? How do you migrate them forward? Well, running a virtualized instance of XP in Windows 7 is an option we've talked about. But Microsoft is pushing the idea of using 'shims,' which are a way to bypass or trick the code into thinking it's still running as user/superuser mode in Windows XP. This is an old trick that Microsoft has often employed, and it has brought the Windows kernel a long ways, in a duct-tape sort of fashion. At the TechEd conference in LA, Microsoft associate software architect Chris Jackson joked, 'If you walk too loudly down the hall near the [Windows] kernel developers, you'll break 20 to 30 apps.' So for you enterprise developers fretting about transitioning to Windows 7, shims are your suggested solution."
  An alternate solution? (Score:2, Funny)
  I thought it said "shivs". I guess that would be another way to coerce people into giving up their precious XP.
  Meh, this isn't the issue 90% of the time... (Score:2, Informative)
  If you are smart, you are usually on software support anyway, and your publisher can help you out. When we tried AutoCAD Inventor in Vista/Seven, it was just a quick call to AutoDesk to get it working. My thoughts on legacy software? Stay
  Re:Meh, this isn't the issue 90% of the time... (Score:4, Insightful)
  You can't always stay away from legacy apps. Legacy apps are made to fill a need that a particular company has in a particular situation. This usually means that when their app is finally put up against the wall, their choices are either stick with the entire old ecosystem, OS and all, or rewrite from scratch.
  Given finite budgets and a culture that values returns *this* quarter at the expense of every future quarter, guess which option gets picked most often.
  Re: (Score:2, Interesting)
  I'm just curious
  ... what's the difference between having to shim ENTERPRISE CLASS SOFTWARE and, oh, say, just switching to Linux? Seriously, is this less work?
  Re: (Score:3, Insightful)
  Yes, training is almost always more expensive than the change.
  Let's take a small company using enterprise class software... say 15,000 employees. And let's pretend you pay them squat, $10/hr. Means it costs you $15/hr at least to have them.
  So every hour you spend training costs $225,000
  ... windows -> linux would likely be a 4 hour afternoon session, so you're knocking at a million dollars just for your employees time. You haven't even paid the trainers yet, and this won't be one massive webinar, you're
  Re: (Score:3, Insightful)
  Re: (Score:3, Insightful)
  That's not just people being stupid. The assumption is the cost to support one is close enough to the cost of supporting the other to disregard any differences.
  The obvious issue bandied about for Linux - additional support cost (pricier personnel, fewer contracts/vendors, etc.) vs. the MS licensing cost.
  Mind you I'm not agreeing or disagreeing on this particular example, but there is a why.
  Re:Meh, this isn't the issue 90% of the time... (Score:5, Insightful)
  Re: (Score:3, Interesting)
  Re: (Score:2, Troll)
  It said "shills".
  I know you slashdotters hate to hear it (Score:5, Insightful)
  But MS's support for backwards compatibility is THE REASON they own the desktop.
  You can slam all you want, but they will continue to own the desktop because they run all the apps you want.
  Re: (Score:3, Insightful)
  Yep he's right.
  Not aggressive marketing or flagrant violation of antitrust laws. Certainly not stability of security. Inovation? Forget it.
  It's backwards compatibility for the win, ever since version 1.
  Re: (Score:3, Insightful)
  "It's backwards compatibility for the win, ever since version 1"
  Except version one wasn't exactly a 'win'... or two... three was where it really started taking off.
  Of course the fact that you could still run your old DOS programs was quite the benefit as people had a lot of them... oh no, there goes your argument!
  "or flagrant violation of antitrust laws"
  hint: they had to become a monopoly power first!
  Re: (Score:2)
  "or flagrant violation of antitrust laws"
  hint: they had to become a monopoly power first!
  Microsoft were competing unfairly long before they became a monopoly, and this is also illegal.
  Competing unfairly in ways like only offering discounts to companies that don't stock competing products - discounts so large that anyone who wanted to stock a competing product basically could not hope to sell anything by Microsoft at a competitive price.
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  "Microsoft were competing unfairly long before they became a monopoly, and this is also illegal"
  Citation needed.
  The example you gave is not illegal unless you wield undue market clout (such as that held by a monopoly). That is the case with any "unfair competition" law I've heard of - it's only unfair if competition in your market is limited (e.g. because you're a monopoly or because you and a few other players collude to maintain a collective strangle-hold on the market).
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  IANAL, but...
  It depends on what they did to "compete unfairly". For example, it is not illegal for a vendor to have a contract with an OEM that the OEM could not buy a competitor's products if the vendor is not in a market monopoly position.
  On the other hand, it is illegal for them to bribe, blackmail, or threaten someone to sign the contract.
  To summarize - my point (and the GP's point) is the antitrust laws define a monopoly, and unless the entity falls into that definition there is a lot they can do that they couldn't do otherwise. Anti-trust laws only limit what a monopoly can do - not everyone else.
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  The browser thing is so hypocritical it's almost beyond belief. MS were bundling IE with Windows right back to Win95 with IE2 IIRC. At the time, Netscape was closed source, paid for software, often licensed by ISPs to give out to their customers. We used it because it was what came with our ISP package and knew no different. I discovered IE when I double clicked on a
  .htm file on the harddisk once and wondered what it was. No one complained, because Netscape had pole position of mindshare and possibly (I'm guessing but cannot confirm) was better anyway. Then... IE started actually getting good, and there was competition, and all of a sudden it was "unfair that they're bundling a browser", even though it wasn't "unfair" for years before that. Now we have a range of open source, free browsers. We would still be buying them if IE wasn't given away with Windows. If you think that's unfair, then you can donate to your favourite browser team.
  I liked that IE was integrated into the OS! Just as how I like that KDE does (or did, I've not used KDE4 to know if it's changed). But now, because other people weren't choosing to use other browsers, I now can't choose what I wanted. The whole things stinks of hypocrisy. But yes... this is slashdot huh. Oh well... I'm sure no one else will read this now anyway!
  Re: (Score:3, Interesting)
  Oh please! Look up the dirt on Commodore, or any of the other players then. They were ALL screwing somebody over. Remember this "Greed is good. Greed works" Wall Street? That was the whole culture then. It was Reagan and trickle upon you economics. Then are plenty of stories of Commodore screwing vendors and suppliers and anybody else that would give their company an advantage.
  Face it-They all did it, Bill Gates was just meaner. But don't worry, I predict that MSFT will just keep slowly sinking year after y
  Re: (Score:2)
  The argument is that it's ridiculous to suggest that backwards compatibility is "THE REASON" for MS's success - particularly without presenting evidence of competitors who losing market share due to poor performance in this area.
  Backwards compatibility isn't even that strong for MS. Windows XP broke plenty of apps (do a few searches the 'Why Applications Break' section of [google.co.uk]
  Re:I know you slashdotters hate to hear it (Score:5, Interesting)
  "The argument is that it's ridiculous to suggest that backwards compatibility is "THE REASON" for MS's success"
  I don't think the word 'the' was meant to be taken as a literal definite article, sometimes people exagerate to demonstrate their point as a shorthand way of explaining that the actual extent of their point is large enough to warrent exageration. It's something I personally prefer to not do, but I don't think it's too much of a problem when people do.
  I don't think anyone's going to suggest that MS OS's are perfectly backward compatible; sometimes things do need to change, and sometimes things rely on bugs that shouldn't be left open, but in all my own personal experience, they do win hands down next to Linux and Apple (I can't comment outside the scope of those three). Say what you want about "having the source code", but when things need certain versions of libraries for certain APIs, or relied on the way a particular version of GCC compiled their code that's now no longer the case, things don't stay so black and white. Yes I've been able to update a lot of old code myself to reflect changes and get it to compile, but there's still an awful lot I can't.
  Re:I know you slashdotters hate to hear it (Score:4, Funny)
  I dunno, does your computer play 'whoosh' sounds at you when you scroll down or anything? If it's confusing you, you should turn that off.
  Re:I know you slashdotters hate to hear it (Score:4, Funny)
  That's why I refuse to get one of those newfangled autoMObiles until it knows what Giddap and Woah mean. I tried on once, but no matter how much I yelled or whipped it, it just wouldn't move.
  Re:I know you slashdotters hate to hear it (Score:4, Informative)
  Vista has had these "shims" all along too. The filesystem and registry are virtualised, so any stupid program that tries to write to $PROGDIR or do anything else stupid has the changes re-directed to somewhere safe.
  Re:I know you slashdotters hate to hear it (Score:4, Informative)
  As I recall, "somewhere safe" is %APPDATA%\VirtualStore\Program Files\ etc or something that looks a lot like that. I can't check here because I'm at work and we use XP here.
  Re: (Score:2, Flamebait)
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  Nethack may be old, but the binary you use on Linux was compiled recently. Set up an old Linux system (RH 6.2, to throw something out there), run Nethack on it, and then try to run the same binary on a new system. It won't work.
  Having the software be open-source alleviates most of this, but closed-source will never work too well on Linux unless they stop breaking everything all the time.
  Re: (Score:2)
  Re: (Score:2)
  Agree and one can also not discount the WIN32 API and Visual Basic either. I loath them both at this stage in my career but they are what I and many others started on and there are thousands, if not more then a million, internal business apps running on both these technologies. The lure of easy was just too hard to resist, not to mention marketed brilliantly, (criminally even!) by MS.
  You're right,
  ./ers hate to hear it, I hate to hear it or say it, but your right.
  Re: (Score:3, Interesting)
  It's certainly not the ONLY reason.
  Solaris has great backwards compatibility. Better than Windows, even, and not by a small margin, either. I am running a copy of xemacs today I compiled in 1997 or 1998... 5 major OS revisions back. You can even run third-part device drivers meant for 2.4 on 10 with a reasonable expectation that they will work, and work well. You can even run applications built for SunOS 4 and expect many to work. And SunOS 4 -> Solaris 2 was a major leap. About the same sized leap as M
  Re: (Score:2)
  We all know that Solaris doesn't own the desktop. Hell, I'm a Solaris fan as AFAIC they don't even HAVE a desktop.
  Just FYI, they _do_ have a desktop--at least, OpenSolaris does.
  I really liked what I saw when I tried out the OpenSolaris livecd, but I don't have a valid reason to run it anywhere, so I can't comment on the long-term quality/usability.
  If you're a stump, maybe... (Score:2)
  > they will continue to own the desktop because they run all the apps you want.
  Yeah, how's that iPhone dev work going for you? Xcode and the simulator working smooth, eh?
  Talk about termites stuck in amber...
  Re: (Score:2)
  And it's also the reason why we are going to hear about security issues with Windows even in the future.
  I certainly miss some of the abilities that *nix offers like chroot, setuid etc. that makes it easy to do things in a controlled manner.
  Photoshop on the Mac (Score:2)
  Case in point against OS backwards compatibility: I use Photoshop on the Mac, and have done so since 1992, from the 68040 under System 7 to the PowerPC on OS9 to OS X on Intel. For all this time it's been the same program that has moved along with the times, as they were going to anyway to keep the product alive and relevant. I can't run PS 2.5 unless I use an emulator, find some System 7/8 disks, etc. But the bigger point is, except for retro-purposes, why would I want to?
  I'm beginning to wonder how much s
  Re: (Score:3, Interesting)
  I'd agree that the backwards compatibility has been a huge factor in their dominance, especially in enterprise installs. But I would also say that the same backwards compatibility has been a curse as well as a blessing in some ways.
  A blessing, in that you could with a reasonable degree of certitude run custom in-house apps dating from the Win 3.1 era on later versions of the OS. This meant companies were free to upgrade to later versions of Windows without having to rewrite all their in-house code. This
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  Haha, for me, the best bit was where you said
  "its not due to MS backwords compatibility"
  and then followed it up by listing a bunch of arguments showing why it is due to backward compatibility! That totally caught me by surprise! But yeah, you're right, if they dumped compatibility people would get pissed off, because they do want backward compatibility!
  "All the app makers target Windows because thats what 90% of desktop users use"
  Do you think Windows would ever've gotten so popular if it didn't allow people to run their old DOS programs? Course not. It's called 'transition', and it's much less disruptive, esp to businesses, than quantum leaps.
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  It's not 'lazy to learn' a new set of apps, it's 'utter panic and fear at having to move years and years of vital company data from one business application to another.'
  I know companies that still use applications that are little more than absurdly complex DOS
  .BAT files because that's where all their data is.
  Learning a new system is child's play compared to migrating all the data, ensuring nothing is lost, getting everything to work (laser printers, faxes, god forbid there's any dot matrix or thermal printers...)
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  Then you say:
  Wine is the definition of using hacks to get an app to run on an OS. If it is ok for Wine, why is it not ok for Win7?
  Re:I know you slashdotters hate to hear it (Score:5, Insightful)
  Wine is the definition of using hacks to get an app to run on an OS. If it is ok for Wine, why is it not ok for Win7?.
  Shim for XP compatibility = LOL, Microsoft sux!
  No-shims and screw XP = LOL, Microsoft sux!
  Re: (Score:2).
  Did you actually read the document? Do you know what shims are?
  The whole reason shims exist is because the APIs change over time, so what was correct usage in Win2000 or WinXP might not be correct in Vista or 7. Shims let applications written for older versions of the API work on the current OS without the current OS having to have all the different API versions simultaneously active*.
  *Wow, would that be one heck of a mess.
  Re:I know you slashdotters hate to hear it (Score:5, Informative)
  The whole reason shims exist is because the APIs change over time, so what was correct usage in Win2000 or WinXP might not be correct in Vista or 7.
  Well, depending on how you interpret that statement, that's only part of the reason, because MS rarely breaks an API in a backwards-incompatible way.
  There are basically two reasons why software stops working on windows:
  1.) It makes assumptions that are at a higher level than what the API does. For instance, that the user is running as administrator. At least on the NT line, it has never been the case that the API has "allowed" a program to assume that a requested access to HKEY_LOCAL_MACHINE will succeed, or that it can write to Program Files. (Starcraft crashes at the end of a game when run as a limited user under XP -- presumably because it tries to write LastReplay to Program Files.) Even if the API can theoretically return an 'access denied' error, the programmer assumes that it won't actually arise in practice.
  Another example of this is DOS programs that assume they can access the hardware directly and stuff like that, which "of course" doesn't work under NT.
  2.) It makes assumptions that are not part of the API proper, but just artifacts of the implementation. For instance, assuming HANDLEs (which the API says should be opaque) are pointers which can be directly accessed (which is true in version A but not true in version B). One good example of how subtle this can be is a shell namespace extension that implemented a function signature wrong by giving the wrong number of arguments. This creates the strong potential for stack corruption. On Windows 95 and NT 4, it worked because Windows was compiled with frame pointers, which left it robust to that error. With Windows 2000, Windows was compiled with the frame pointer optimization, which meant that program crashed Explorer. At no point was "Windows will be compiled with frame pointers" part of the API.
  (Then there are higher level problems of a similar nature. There are programs that will open up the display properties dialog then send tab messages or otherwise enumerate the controls present, then change, say, the fifth control so it has the setting they want. What if MS changes the tab order or adds a new control? Boom.)
  So if you say that "the APIs change over time" means that their defined behavior changes, this is the decidedly minor aspect of compatibility problems. It's only if you allow implementation-specific details to creep in (which I don't consider part of the API) that your statement is true.
  Re:I know you slashdotters hate to hear it (Score:5, Funny)
  Funny, Apple was able to make the transition from insecure, single-user based OS to more secure, multi-user OS without too much trouble and keeping a compatibility layer for older apps. Why can't Microsoft do the same?
  When you only have about 20 apps for the platform, it's easy.
  if youve got to go through a bunch of hacks (Score:5, Funny)
  Re: (Score:2, Informative)
  Apparently not. According to Microsoft partners (i.e. consultants), a team of 2 or 3 consultants can teach a team of 3 or 4 internal people to shim applications in a hands-on fashion. The majority of this training centers around teaching what the shims are and what they do, not actually fixing software. That's reserved for the last 2 days of the 5 day session. During that time the consultant claimed they would shim a minimum of 25 apps to provide a broad understanding for the internal people
  Something th
  Try chroot on Linux (Score:3, Insightful)
  Well, since what you described looks something like what chroot+setuid do on a Unix system, 25 apps in 2 days by 3 people is *extremely* slow.
  Re: (Score:2)
  in fairness
  1) its a chroot with a custom set of requirements
  2) your dealing with windows admins
  Re: (Score:2)
  just to get the software to work properly, you may as well just move to linux
  Option #1: Refactor the application to use a totally different set of OS APIs, display libraries and system calls.
  Option #2: Refactor the application, removing all of a subset of "offending" API calls or wrapping them in a UAC-subroutine call.
  Option #3: Provide a thin application compatibility layer that emulates the "offending" API calls in a non-offensive way.
  I think that's in order from hardest to easiest, since you only have to do it once. Incidentally, given how well WoW64 works (and the answer is flaw
  Re: (Score:2)
  you may as well just move to linux
  Sounds great, does Linux support shims yet?
  Re: (Score:2)
  selinux, apparmor type security allowing it to run AS root while being locked down?
  or chroot allowing it to think its root, while its really in a fakeroot?
  nah i don't think anybody has been doing that for years on linux, nope not at all!
  Re:if youve got to go through a bunch of hacks (Score:4, Insightful)
  By that logic WINE is just as good an option. Its transparent to the application and provides compatibility prior versions of Windows. If you have load additional software on windows or develop compatibility layers on your own then there is no value in the backward compatibility any longer. You might as well pour the same efforts into getting your app running on WINE.
  HA HA (Score:5, Insightful)
  At the TechEd conference in LA, Microsoft associate software architect Chris Jackson joked, 'If you walk too loudly down the hall near the [Windows] kernel developers, you'll break 20 to 30 apps.'
  Yeah, real funny. Our software is fragile as fuck, HA-ha
  Who's laughing at that goddamn joke? Oh, right, Microsoft is -- all the way to the bank.
  It's not the MS software that is fragile (Score:3, Insightful)
  Well, maybe it is. But it's the large number of other apps that are at risk of breaking. Even if every one were written correctly, it'd be tough to maintain 100% compatibility. Add in the fact that many are written massively incorrectly (i.e. fragile) and you have a really tough road ahead of you.
  Also, breaking 30 apps is peanuts, there has to be well over a million apps for Windows.
  Re: (Score:2)
  "Yeah, real funny"
  It's slightly funnier if you don't think of jokes as being accurate representations of fact.
  But I guess once you're angry, you're angry.
  Re: (Score:2)
  Ummmm. yea. You try writing an operating system in such a way that it can run applications that were designed for an older version of the operation system. Then throw in apps that don't bother with standard application programming guidelines. I have seen so many commercial pieces of software that write user config files to the program files directory or do something else equally stupid. Then Windows actually makes some gains in security and these apps break. Then it is Windows' fault.
  Re:HA HA (Score:4, Informative)
  It will be a long time before Wine will have this level of compatibility.
  if i were a microsoft public relations flak (Score:4, Funny)
  i would downplay this notion of shims, and ballyhoo this notion of duct tape
  shims just sound like a lame hack. using a shim means you've given up on elegance and respectability
  but duct tape is awesome! if you use duct tape to solve a problem you are a manly mcgyveresque resourceful type
  windows 7: the duct tape os, is a mark of pride dude!
  Re: (Score:2)
  shims just sound like a lame hack. using a shim means you've given up on elegance and respectability
  Shims allow Microsoft to fix bugs in Windows without affecting applications. Changing how any API call works, even to fix something that is clearly wrong, can cause major problems, because there could very well be applications out there that rely on the broken behaviour.
  I'll give you a practical example. In Windows 7, they fixed the CreateFileEx() API call, which is used to create and open files. Pretty mu
  love or hate it. (Score:5, Insightful)
  Shims work.
  It reminds me of the part in "Zen & the Art of Motorcycle Maintenance" where he suggests to John that beer can aluminum would be the perfect shim to keep his handlebars from slipping. John rejects the idea of using a beercan on his beemer, and so goes to buy "quality shimstock" which is probably made from beercans.
  We shim many things, and I had no clue till I took off the siding of my house, and redid a few doors. Shims are how we make construction look good, and still get it done in a timely manner.
  Surely it applies to programming as well?
  Re: (Score:2)
  Windows Vista was supposed to be their complete rewrite that broke backwards compatibility. That's where they should have put the shims in. Windows 7 was just supposed to be putting a new skin on the top, removing V
  Re: (Score:2)
  I for one detest ugly hacks like shims and sudo...
  ...oh, wait.
  Sure, (Score:2)
  but you can't retroactively design something.
  Just as the beemer should have had a smaller space for the handlebars, what do you do when the product is already adopted?
  Lexmark is a horrible offender. (Score:3, Informative)
  Try getting a Lexmark all in one device to work while NOT admin - ain gonna happen. If you call up Lexmark to ask why their shits broke, they pawn it off on Microsoft. I spent quite a bit of time figuring out folders to change ownership permissions on to make that bastard work without giving admin to everyone.
  Well (Score:2, Interesting)
  If you were really shafted, then the shims is worth a go.
  In many many cases, applications can be fixed to run without admin rights. By checking using regmon, filemon, and similar, you can get a handle on what an app is opening and where the permissions issue lies.
  This is a bit time consuming, and its a negative, but it is do-able.
  There are four things that proceed the problem.
  Lazy users
  Very lazy developers. -- The prime cause of security failures in Windows.
  People only too happy to simply run as admin -- Ba
  Re:Well (Score:4, Interesting)
  Everyone always cites lazy developers
  ... but I have to ask, is it really the programmers fault?
  Assume that some database program will only run as an administrator. Is this because the developer couldn't be assed to write proper code, or is it the result of a very tight schedule imposed by management, who needs to ship their product before Q4 so they can meet their debt obligations, thus forcing the programmer is take the quick and dirty route for this bug so he can focus on show-stopping bugs?
  Really, I think that this practice is a symptom of a much larger problem.
  pointless (Score:4, Insightful)
  For a single-user system (the majority of Windows desktops), it doesn't matter whether or not the user is an Administrator, at least from a security perspective. What threats are you protecting against by subjecting users to extra authentication buttons when installing apps? The only thing the single user really cares about is his own data! Malware running with his (non-administratior) access can destroy his data just as well as malware running as administrator. With either permission, the malware can spread via sockets, file infections, or web access.
  This obsession with UAC on single-user desktop systems is simply misguided. Yes, some existing malware may break if it runs with non-admin privileges. But once non-admin becomes common, malware authors will just stop presupposing admin access when coding.
  Re: (Score:2)
  What threats are you protecting against by subjecting users to extra authentication buttons when installing apps?
  If something wants to install or edit system files or even view some important system information, you get a warning about it and explicitly have to ok the event. If someone clicks what they think is movie download (but is actually a malware installer) then clicks run without looking closely, UAC will pop up and ask if you really want to let that program edit system files.
  Considering that the vast majority of malware is still caused by user initiated actions, that is a non-trivial piece of security.
  Re: (Score:2)
  Did you read all the way to the end of my post? Because most machines do not use this "feature," it can screw up much existing malware. But as soon as the feature becomes standard, it will be a worthless expense. The mistake you are making is that you are forgetting that the data, not the system files, is all that matters to the end user.
  Re: (Score:2)
  Maybe I don't get what you're saying here so let me summarize my argument for why UAC makes sense...
  UAC makes it much, much more difficult to install a program without the user's knowledge. UAC makes it much, much more difficult to make software run automatically on start up without the user's knowledge. UAC gives users more control over what is and isn't on their systems.
  You seem to be making the argument that UAC is about protecting my data from someone else who uses my computer. That's not what UAC is
  Re: (Score:2)
  You overgeneralized about UAC, and you completely misstated my comments.
  UAC is intended to prevent malware from harming the user. The idea is that malware running as a normal user (not as an administrator) can't harm the user or spread to other users. That's an absolutely false assumption--one which has its roots in the multi-user servers of yore, not the single-user desktops of today.
  Today, malware running as a normal user can both spread and destroy all data on a system which the user values. When UAC dep
  Re: (Score:2)
  erm
  1) its easier to remove non-root malware
  2) there are still many exploits for many programs, reducing the effect of these is still a good thing.
  3) not all problems are malicious, buggy programs as root can cause much more trouble than the same program in a jail/chroot
  Does this really work? (Score:4, Insightful)
  This seems to be aimed at applications which insist on running with administrator rights but don't actually use them. If the app actually tries to do something that needs administrator rights, it's going to fail anyway.
  If applications without administrator rights can put files in administrator directories, especially ones that have OS components, then turning off administrator privileges is sort of pointless.
  Re: (Score:2)
  Let us do some study on this .. .. (Score:2)
  If it is not broken, don't fix it.
  If it is broken, and can not be fixed, provide a workaround.
  If after the workaround it is still broken, shim it.
  The shim is therefore the workaround for the workaround.
  Now then, if we Vertulize the Shim, and put it in the forest where no one can hear it crash, does the problem realy exist?
  Sounds like a great way to get to five 9's to me.
  YMMV
  But who has source code?!? (Score:3, Insightful)
  This requires Windows source code so that you can hook the API's. Who the heck has that for any applications they run? Instead, this is a fix being presented to ISV's... however, if an ISV hasn't fixed their code yet, they probably aren't going to bother now.
  Re:But who has source code?!? (Score:5, Informative)
  ISVs can create a "manifest" with their application telling Windows which shims need to be in-place to run the application correctly, without changing their code and without having access to the Windows source code. That's the point.
  Microsoft already ships a compatibility checker utility: [microsoft.com]
  But they can't force ISVs to run it, and they can't force ISVs to fix the problems it finds. What they can do is say, "hey, this shim is an easier fix than the compatibility checker you're already too fucking lazy to run" and hope that sticks.
  Re: (Score:2)
  This is not a new solution at all. At my company, we had to employ a shim to make one of our "in house" developed apps work in XP even...
  Please save any comments about "forcing our developers to fix their code." I mentioned it, and I might as well have suggested we invade Russia by land. Unfortunately, we got it to work, and the appropriate funding to make the software better never materialized since there was "no need to fix it anymore."
  Re: (Score:2)
  Re: (Score:2)
  Fortunately, I didn't have to. It happened before I started here. But I'm going to go out on a limb and guess that it was applied when the software was packaged into an MSI format.
  We = company in this case. I should have specified.
  The suggestions I made came long after the fact. I was informed by my leadership that they had already lost that fight, and that I shouldn't bother pursuing it any further.
  Re: (Score:2)
  You simply download the Application Compatibility Toolkit from the MS web site and apply the required shim(s) to your app (stores the required config in a
  There are also tools to help you determine what shims your applications needs. Once you get started with this, it is pretty easy to do.
  Re: (Score:2)
  On one hand you didn't get the money to fix your code. On the other hand, Microsoft stepped up to the plate to "protect your investment in your legacy solution". The only cost to your organization was the time spent sorting out the shims. You mentioned you had to shim an app to get it work on XP. How old was it? Did it run on 2000? Was it developed for 2000 or NT? At the risk of comparing apples and oranges here, how many nearly ten year old Linux apps can you run on the current kernel without a reco
  Re: (Score:2)
  Re:Mike (Score:4, Insightful)
  Re: (Score:2)
  Yeah but how many of those apps are SUDO or SUID
  Considering, under both systems, they won't sudo without getting a sudoer's password, probably not many. No Mac OS X Cocoa application runs as sudo or setuid, and you can't escalate on Mac OS X or any BSD without having a password. I can't speak for Linux programs.
  The whole problem from the beginning was MS-DOS and friends presuming from power on that you wanted to be running as admin.
  Re: (Score:2)
  In the OS X world, other than perhaps needing an admin to install the soft
  Re:Mike (Score:5, Insightful)
  Since at least Windows 2000, Microsoft has provided guidelines about how to write code so the applications do not require administrative privileges. Most developers have either been ignorant of the practices, don't care about the practices, or don't know how to implement the practices. A lot of it has to do with where the DLL files get stored, and where the application writes its files to. In the *nix world, everything is pretty self contained within its own directory. For the most part, all of the files that an application needs are right there with the application. If they aren't in the same directory, symbolic links (something that Windows lacks) provides the application access to the necessary libraries.
  I think you're blowing things out of proportion to say that it is unheard of it in the Windows world for users to be able to run as a something less than a super user. At my current job, we only have one app on the network that requires admin privileges. When I was consulting, most of our clients were all running as regular users.
  The "problem" with Microsoft is that they have always catered to the lowest common denominator. When it comes to developers, they provide the developers with a powerful IDE and don't encourage them to think about how it works behind the scenes. That ease of use has come at the cost of security. Sure, devs have been able to come up with the applications that they need to meet the business requirements laid out for them. Unfortunately, those applications often times aren't properly hardened and crack when put on hostile networks.
  I see the computer world working from two different ends. The Microsoft part of the world has provided the functionality and is backing into security. The *nix world has provided the security and the stable foundation, and now they are building the functionality.
  Re: (Score:2)
  "symbolic links (something that Windows lacks)"
  It always pissed me off that MS never bothered to implement a simple way for people to use them.
  Most people don't realize that NTFS has support for Sym links (vista & server08) and and also Junction points (limied Sym links) sence NTFS's first inception in NT [wikipedia.org]
  they have it.. it's been there. and you can use it - i've used junction points for a long time..
  people just don't realize they exist in Windows.
  Re: (Score:2)
  You must be talking about some crazy, bizarro *nix world, as the one in this world tends to split directories up by what the files are for, not by application.
  For example,
  /etc has configuration files, /usr/bin and /usr/local/bin tend to have executables, /var/log has log files... I could go on.
  Very infrequently, apps will install their entire directory structure into something like
  /opt, but that's very, VERY rare.
  Re: (Score:2)
  It was written in the 90s, in VB. That's about all I know. From what I understand, it did run properly in NT 4 SP6, but it was never tried on 2000.
  Really, the point of the comment is that this is reuse of an old solution. Even during the attempt at migrating to Vista, shims were a suggested solution for applications that didn't work.
  Re:Mike (Score:4, Insightful)
  Re: (Score:2)
  What should Microsoft be doing?
  Oh, this is easy. Are you kidding? This is slashdot. Even I know the answer to this one. Microsoft should be rolling their own linux distro, complete with wine. See? Simple as pie.
  Re: (Score:2)
  Re:Mike (Score:4, Informative)
  I'm reading the documentation right now, but I'm curious if it resolves the security problems. I'm guessing that a shimmed app is running in a sandbox? Or is the shimmed app given fully elevated privileges so that if gets compromised, the exploit code can still own the system?
  Neither. The shim code just lies to the app and says it has admin rights, it's just like fakeroot in Unix.
  You then write code in the shim to intercept any calls that really require admin rights and deal with them appropriately. If it's something dumb like wanting to write to something in the Programme Files directory you can redirect it to the users home dir. If it's something that really requires admin then you can ask for it and the user gets a UAC prompt.
  Re: (Score:2)
  Re: (Score:3, Insightful)
  Those are exactly the reasons why you'd want to write a shim. Often it's just easier found out the part of a PE that's causing a problem and then write a hack for it. MS does exactly that for massive numbers of popular applications, it's how the Windows Application Compatibility Layer works.
  That might sound crazy but it's actually the least bad choice. It means they can keep compatibility cruft out of mainline development meaning apps written and tested for Vista / Win7 will work because they're written The
  Re: (Score:2)
  Re: (Score:2)
  Why? API redirection is like a zillion times faster than virtualisation.
  Re:Security flaw? (Score:4, Insightful)
  I suppose you check the design schematics for your car and watched your house being built to make sure there're no bugs planted in the wall...
  You have to draw the trust line somewhere. So a business wants to check the code's all alrighty, they have to pay someone to do it... except then you're relying on the trustworthiness and skill of that person. They may as well just be paying MS.
  Don't get me wrong, my line of work's all open source stuff, and where people require windows servers they always go in a virtual machine, never on bare metal. But I'm not everyone, other people and other businesses have other priorities. Ignoring that helps no one.
  Re: (Score:2)
  You have to draw the trust line somewhere.
  Yes - I think it's better to draw that line outside the company who makes a product.
  I've never looked at a line of the linux kernel source, but I believe if someone slipped malicious code in there there is a pretty good chance someone would notice it and raise a storm. If malicious code were slipped into windows it'd be much less likely to get spotted.
  I'm probably less trusting than most people, but the idea of anyone trusting a company that has been convicted of criminal charges to run you computer with an
  Re:Security flaw? (Score:4, Insightful)
  Next you'll be telling me you can't switch to another virtual console if your GUI crashes
  If your GUI is crashing, you should consider using a different OS entirely. GUI crashes seem to be an acceptable event among Linux users, but most other users would not tolerate such occurrences. In Windows, there is a chance the "explorer" file manager might crash. For example, due to a 3rd party extension behaving badly. However, since XP and onward, a crashed explorer will restart automatically. Since explorer is only part of the GUI, none of your applications are disturbed.
  Crashes of the underlying GUI are almost unheard of unless there is a serious flaw with the graphics driver. Since Vista and onward, the WDDM (Windows Display Driver Model) can restart the graphics system if such a problem should occur.
  or review the OS code to satisfy yourself it's not malicious.
  I would suggest that if you are paranoid enough to warrant reviewing the entire source code to the OS you wish to choose, you should probably consider some type of therapy. Using computers will only exacerbate your underlying problems.
  Re: (Score:2)
  I was thinking more before explorer starts.
  There's plenty of times when the login screen hangs after typing my credentials (usually because of Active Directory problems). Can't cancel and log on as a local user, just got to wait/reboot.
  Less often explorer just doesn't seem to start, or takes ages to start. I suspect this happens when Windows installs updates, but I'm not certain. Anyway, it would be much easier to switch to another interface and check what's going on.
  Re: (Score:2)
  Next you'll be telling me you can't switch to another virtual console if your GUI crashes,
  Your GUI crashes? Seriously?
  If that *ever* happens, you should just pack up and move OSes. Not acceptable.