About the SysWow64/System32 thing, my understanding about the reason they did it in that direction (32-bit programs get redirected) was because the intent was to have 64-bit programs be able to access folders without redirection; that is, the redirection would only take place for older programs, not for new software. A 64-bit program sees folders and their contents as they exist on disk; a 32-bit program run on the 32-bit virtualizer effectively sees a 32-bit system. Going the other way around, newer programs written against the modern instruction set would be seeing disk contents (and registry location) in a way that did not reflect how they actually were- and the older software would see things properly, which is a mechanic that tends to be reserved for compatibility considerations.
BC_Programmer
@BC_Programmer
Best posts made by BC_Programmer
-
RE: :fa_windows: That's Windows 7 for ya
-
RE: More complaining about git
@Intercourse said:
And that is just...wrong. If you have to put bugs back in to get your API to support applications, you are on the verge of drowning in legacy support costs.
Interestingly, the contrary is the case. Take for example how several programs would get a handle to a their Window structure. That seems benign- except that the structure is completely undocumented. The reason it was undocumented? Well, so Microsoft could add features to it later- It was used internally by Windows itself.
However, the developers of the programs in question needed a feature and for some reason managed to stumble on the internal Window class structure as a way to get it.
So their product does something -accounting, spreadsheet- whatever, really well. It flies off the shelves. It works perfectly fine on Windows 95. The publishers get praise.
Windows 98 comes around. Suddenly the program breaks. Users take home their shiny Windows 98 box, install it, or take home their new Windows 98 PC and try to install and run the program, and it doesn't work. Do they blame Microsoft, or the software developer? Well- It worked before, right? The program didn't change, so it must be Windows' fault.
So- some argue- "Ah, so it's the developers responsibility!".
Except if they fix version 3.0 to get it running on Windows 98, what incentive would customers have to buy their new 4.0, which has been freshly painted and updated to use Windows 98's internal structures? None. This is why Microsoft has employed Appcompat Shims for some time. Windows 95/98+ had a limited form of this but Windows 2000 introduced the internal Appcompat database. Effectively it is a database that tells windows how to behave or pretend to behave internally so programs will work. The alternative was to keep fielding support calls from customers wanting to know why this new Windows version broke their Accounting Program version from 10 years ago. These "bugs" which are usually just undocumented internal behaviours or structures that programs stupidly used for their own purposes, are only replicated for the program that needs them.
-
RE: Windows 9 (And Pandora) appreciation thread
Interestingly, the only time I've had issues developing was when I disabled UAC. It actually made zero sense. It was a .NET application that wanted to compile a script while setting itself as an available reference to that script. With UAC enabled, it worked fine. If UAC was disabled, apparently the Compiler's attempt to open the executable failed (the old "File is in use by another process" thing). It makes no sense because that also doesn't happen on XP or Earlier. For whatever reason trying to open a running EXE when UAC is disabled always results in access denied. Not sure what was happening there. I worked around it with an interface library but it was still weird.
One of the issues I see is that many people figure that the feature is to protect the user from themselves, when really, it's to protect the user from those sneaky programs. Arguably it's of dubious utility to the vast majority of people, but I appreciate that programs need to at least get my consent to elevate to admin permissions. If I'm installing software, I expect it. if I'm running a utility that has no reason to have admin access, I will pause.
In the case of UAC, there are three types of applications. Applications that aren't aware of UAC at all, Applications that are aware of UAC and work properly, and Applications that claim to be aware of UAC but are otherwise identical to the first set.
The first set of programs works fine. For those programs, access to the otherwise restricted folders (Program files, Windows, etc) get's virtualized to your user data instead.
The second set of programs work fine also; for example, an updater program might start as a local user to allow even non-admin users to view the installed updates for a suite of programs, but in order to download/update, it needs administrator permissions, so pressing "download" will relaunch, via the "runas" verb, the updater with a command line passing relevant data to the new instance.
The third set of programs are the ones causing problems. These are basically programs written that expect admin permissions (and should be in the first set) but where somebody decided to tag the program as being UAC Aware in the application manifest. So Windows goes "ahh, good, I don't have to coddle you, you know what you are doing, as you were then" Then the program turns around and tries to do something write INI files in the program files folder and Windows correctly gives permission denied. if the program had not claimed to be UAC aware, Windows would have been all "oh don't worry it's on mr program you can totally write there no permission issues at all -to file redirector- For the love of god redirect their accesses to this other folder What? Oh, just talking to myself, carry on program" and just redirect all the attempts to write to restricted files elsewhere. (same story in fact for Registry access in the Local Machine hive- get's redirected for programs in the first category).
The situation when upgrading from an older OS I don't know. the last OS "upgrade" I performed like that was when I installed Windows 3.1 and upgraded from 3.0. I can see that causing issues.
What kind of files were you trying to edit and where were they? What kind of files did you need write access to that you couldn't? I imagine you can't remember.
In the "upgrade" case I would expect you to be using programs in the first category, so when you use them and they say save their ini file in the same directory, it actually get's saved elsewhere, in the Local Application Data folder in "Virtual Store\Program Files" (for example) rather than the actual location. You can edit or create say INI files there and the program in question will find them and use them. For editing files that are restricted (eg hosts or configuration files somewhere or system settings) I usually just run my text editor as admin and open it that way. In the case of not having local administrator permissions not letting you change system configuration, that's kind of how it's supposed to work. One cannot blame the OS vendor or an OS feature when IT staff misunderstand and poorly implement it on the network. But then again, too many "IT departments" are just a bunch of people who write kix batch files and don't know what Active Directory or Group Policy editor is. In that situation they ought to have rolled out changes such that users in say a Developers usergroup were also local administrators on their systems.
-
RE: Minecraft- unrelated shenanigans
Well yeah, but see he was doing jack shit from home, whereas everybody else had to go the the office. Doing nothing at all becomes bittersweet when you find out one of your co-workers was able to not only do nothing at all, but also do nothing at all while in their underwear.
-
RE: Pro-Gamergate is pro-life
"It's about ethics in games journalism, now, let me rant about how Anita Sarkeesian is a Professional victim"
Literally every discussion I've seen online from the "pro" side somehow devolves into them making claims about the various women involved. Worse still, the original event that supposedly "sparked" this- the alleged involvement of a Kotaku writer with Zoe Quinn- is completely irrelevant because he never even wrote a review of her shitty game or even anything about the game at all, meaning the calls for "ethics in games journalism" based on that corruption are idiotic at best.
-
RE: Windows 9 (And Pandora) appreciation thread
Diablo shouldn't be requesting administrator permissions. I suspect it is needed for DRM Purposes. You know, connecting to their kernel rootkit or whatever the hell they use these days.
Also spare us the "I'm a programmer, and UAC makes it hard to work" What a load of bullshit that is. I'm a programmer myself (for a living) but the only reason I can see UAC making programming difficult is if you don't understand the basic design principles behind it and how applications should deal with it. (You want admin? prompt for it. You need admin for something? show the icon, and when it's pressed, prompt and re-elevate). I'm sick of applications that don't even prompt at all. You'll press a button and get a generic "permission denied" error. So you have to relaunch the program yourself to do the task, because some asshole decided to design software in 2014 but only test it on an OS from 2001.
By the way- the reason a whitelist doesn't exist should be obvious. If a whitelist existed, malicious programs would simply add themselves to the whitelist, then self-elevate.
-
RE: Minecraft- unrelated shenanigans
I think the best way to illustrate what (as I understand it) is being described is with a... err, illustration.
Let's Say Paula Bean creates a SuperBean Library in Java. She, because she is brillant, licenses it under the GPL.
Now Joe creates a Project and uses the SuperBean library. he references the .jar and creates a derived SuperBean class:
public class JoesBean extends com.Paula.BrillantSystems.SuperBean
Has Joe just created a "derived work"? He has not decompiled anything to extend SuperBean, and his code contains only his own code, and does not include any code from the SuperBean library. In fact, the act of the superclass being used only occurs at run-time- even if the Superbean.jar file is missing, the program will still run, it will simply encounter a ClassNotFoundException when or if JoesBean is ever constructed. In fact, the project could be changed to no longer reference SuperBean.jar at all, and JoesBean is left in some forgotten java namespace. Would it still be a derived work of Superbean.jar?
This get's even more strange when we consider that, in C/C++, including header files doesn't actually constitute a derived work, according to Stallman himself, even. This is how it is possible for companies to create proprietary software while using say glibc. The rules regarding "making a derived class is creating a Derived work" ought only to apply if you happen to need some of the original work's source code to that superclass in order to create the derived class in the first place. But with Java/C#/etc. you create Derived classes without having to decompile anything; all the metadata is added by the compiler to the .jar /.exe/dll. (This raises another question: can you change the license to use that metadata?). You create a new class file which contains none of the original work's code at all, and in fact can even stand apart from it. So why is it a derived work? In that context it is analogous to saying that any bash script that uses sed is a "derived work" from sed and needs to adhere to sed's license.
-
RE: How to increase your LOC count with IDisposable
Inline Date declarations come from VB2+ Date Literals. Why they bothered to keep anything when they removed all the other idiotic language crap, I'm not sure.
Would be funny if the specific date literal format actually depended on the locale of the system being used to compile it.
Select Case has generally been more powerful than switch. eg Case 1 to 4, 6 to 12, y to z would be a valid case; Case "Apples" to "Fruit", Case Is < 5, 34 would be valid too, and so on.
Boolean conversions would depend on the conversion used. Old functions will return -1 to be consistent with VB6 and earlier. new functions/methods will return 1 because they are .NET Functions and don't give a shit about being compatible with VB6 at any level. -1 as true comes from BASIC which used it because there was literally no Boolean. you would define FALSE as 0 and then define TRUE as Not FALSE, which would perform a bitwise not and it would be -1. So when VB itself added constants they adopted the in-place convention that was already being used.
Assignments are not expressions so using the same token isn't typically a problem. (Unless they changed it, if assignments work as expressions than that get's weird fast)
Coercion crap has been in VB since VB2. I think the real issues with VB.NET is that they changed it enough from VB6 for VB6 developers to crusade against the new version, but still kept these rather silly vestigials.
Given the choice I would rather deal with VB.NET over VB6. Even opening some of my old projects apparently crashes the IDE. Good times.
-
RE: Making the best of MS Office files
Most people will comply when you ask nicely, but of course there will always be twits who refuse to make any kind of effort.
Is it really the other person who should be going to any sort of length to provide the file in a format you prefer? This is one common issue that is really weird with free software. So many people seem to think they are entitled to certain things by virtue of using free software. In this case, he seems to be under the mistaken impression that his objections to Proprietary programs should become somebody elses problem.
If you don't want to use software because of it's license, people you work with that do use that software are under no obligation to make any effort just to meet your weird demands. In fact I'd find this sort of thing just annoying, especially when- as this guy is doing- the person seems to think they are entitled to have the file in whatever format they please. How about instead of demanding somebody else make an effort, they get their head out of their ass and start judging software on it's functional merit rather than on it's software license?
It just seems so strange that the software license would be so first-and foremost in terms of software selection. It's like not only refusing a router because the colour of the shell is on the pantone palette and you've decided that you disagree with pantone's ethics, but deciding to instead use a router from 5 years prior that has no shell at all and exposed DC solder joints, and claiming the problems aren't really there because you know a guy with a soldering iron.
Latest posts made by BC_Programmer
-
RE: :fa_windows: That's Windows 7 for ya
About the SysWow64/System32 thing, my understanding about the reason they did it in that direction (32-bit programs get redirected) was because the intent was to have 64-bit programs be able to access folders without redirection; that is, the redirection would only take place for older programs, not for new software. A 64-bit program sees folders and their contents as they exist on disk; a 32-bit program run on the 32-bit virtualizer effectively sees a 32-bit system. Going the other way around, newer programs written against the modern instruction set would be seeing disk contents (and registry location) in a way that did not reflect how they actually were- and the older software would see things properly, which is a mechanic that tends to be reserved for compatibility considerations.
-
RE: "Hurr durr I'ma sheep" AKA Linux 4.0
All the examples I've ever seen are Java, specifically, as it turns out, some functions in the JDK are coded by idiots. I suppose we could pretend to be surprised to be polite. Effectively it comes down to
if(System.getProperty("os.name").StartsWith("Windows 9") { //Windows 9x specific code, often found in //projects that require Java 7 despite Java 7 not running on 9x, //because the responsible developers are dumb and didn't think things through. //given they used "os.name" to determine the "os.version" this is not a big surprise. }
It also tends to be found in code from projects abandoned or forked over a year ago or more. Many of them are intended to run on Linux anyway- why the hell they test for Windows at all is perhaps a better question.
-
RE: 💣 Discourse 1.2 incoming! 軣
Win95 would take 5 minutes to load on my Pentium 60.
That seems doubtful. It doesn't even take 5 minutes for Windows 95 to boot on a 386.
-
RE: Microsoft insider on why Microsoft sucks (and rocks)
Yep, that is certainly possible. Reading through their comments and seeing them frequently reference their "experience in the industry" as effectively a citation raised a red flag for me though.
It is not entirely inconsistent though, I didn't find any where he said he was a carpenter to substantiate a claim about what wood plane is the best brand, so if he is BSing at least he's keeping it fairly believable.
-
RE: Microsoft insider on why Microsoft sucks (and rocks)
The reddit user, who claims they've worked at MS for 15 years.
Post history isn't entirely inconsistent with the idea but there is a lot of "well, I worked on this and this, so I know more about this than you" type posts. The mention of working at a company that makes AAA titles was made in a discussion about game design as a reason why he was right.
If we take all his "I did X" type posts together we find he is something of a Da Vinci of our time.
-
RE: Microsoft insider on why Microsoft sucks (and rocks)
If he has been working at MS for 15 years, how was he working at an AAA game company 6 months ago?
-
RE: How to increase your LOC count with IDisposable
In Basic maybe.
Yeah, it's almost as if we were talking about Visual Basic or something.
-
RE: How to increase your LOC count with IDisposable
Inline Date declarations come from VB2+ Date Literals. Why they bothered to keep anything when they removed all the other idiotic language crap, I'm not sure.
Would be funny if the specific date literal format actually depended on the locale of the system being used to compile it.
Select Case has generally been more powerful than switch. eg Case 1 to 4, 6 to 12, y to z would be a valid case; Case "Apples" to "Fruit", Case Is < 5, 34 would be valid too, and so on.
Boolean conversions would depend on the conversion used. Old functions will return -1 to be consistent with VB6 and earlier. new functions/methods will return 1 because they are .NET Functions and don't give a shit about being compatible with VB6 at any level. -1 as true comes from BASIC which used it because there was literally no Boolean. you would define FALSE as 0 and then define TRUE as Not FALSE, which would perform a bitwise not and it would be -1. So when VB itself added constants they adopted the in-place convention that was already being used.
Assignments are not expressions so using the same token isn't typically a problem. (Unless they changed it, if assignments work as expressions than that get's weird fast)
Coercion crap has been in VB since VB2. I think the real issues with VB.NET is that they changed it enough from VB6 for VB6 developers to crusade against the new version, but still kept these rather silly vestigials.
Given the choice I would rather deal with VB.NET over VB6. Even opening some of my old projects apparently crashes the IDE. Good times.
-
RE: How to increase your LOC count with IDisposable
Why are you messing about with Designer classes, though?