Visual Studio Express 2013
Visual Studio 2013 Express is available for download.
As always, most changes are reserved for higher tiers (e.g. Professional and Ultimate) but some did survive into Express edition.
Go and try it out. It is free.
I am a big fan of full disk encryption. It is more of a political issue for me than security one. While I probably have no data that other would find worth stealing a laptop for, I value my privacy and I don’t want just anybody snooping around. And anyway, full disk encryption is always a good policy when having company’s data around. I don’t want to be one to leek company’s private info just because I read it on my personal laptop.
On my Asus N56VJ this proved slightly more difficult than expected. As soon as I would enable bit locker, Windows would go into Recovery and stayed there. Result was unusable system. After fiddling with Windows and BIOS options, I have found problem. Asus’ quick BIOS initialization left computer in an unhappy state that didn’t properly initialize USB drives.
Solution was just going to BIOS and changing Fast Boot to Disabled (together with already Enabled Legacy USB Support).
Visual Studio 2013 Express is available for download.
As always, most changes are reserved for higher tiers (e.g. Professional and Ultimate) but some did survive into Express edition.
Go and try it out. It is free.
I got a report that one of my applications under Windows XP. It would just simply fail with “The application failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
”
A bit deeper investigation into the Event Viewer discovered slightly different error description there “Syntax error in manifest or policy file "\QText.exe" on line 24. The element trustInfo appears as a child of element urn:schemas-microsoft-com:asm.v1^assembly which is not supported by this version of Windows.
”
Quick look into my manifest showed:
<trustInfo>
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
PPS: You can find schema at Microsoft’s MSDN.
On first glance everything looked proper but next one brought obvious error. I was missing namespace declaration. Quick-fix was to just add it:
<trustInfo **xmlns="urn:schemas-microsoft-com:asm.v2"**>
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
It was that easy.
I introduced this error some time ago when I was fixing high-DPI support. Manifest processing on anything higher than XP (e.g. even XP with some patches), is much more forgiving so this issue hasn’t appeared much in the wild.
It simply goes to show that even most simple changes you do for one OS version might impact other. There is no substitute for actual testing.
PS: Just for reference, here is manifest I usually use:
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<dependency xmlns="urn:schemas-microsoft-com:asm.v2">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</windowsSettings>
</application>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
</assembly>
[2018-08-16: Added Windows 10 GUID.]
I am quite obsessive about which drive gets which letter. I have a certain expectations and it is not uncommon to see me fiddle with drive letters again and again. I mean, if I want that USB drive to be mapped as R:, I will get it mapped there.
Unfortunately this always includes trip to Disk Management and slowly selecting appropriate path. Well, no need for this any more.
Nitpickers of the world, rejoice. My latest program, logically named Change Letter can do this just by right-clicking on a drive. If you have VHD Attach installed, you will not even get UAC prompt.
First time you install Windows 8.1 on high-DPI monitor, you will see a lot of blurring. Built-in applications will be really clear but third party applications that looked nice in Windows 8 suddenly got uglier.
It is not that Windows got dumber with new version. They actually got much smarter and now they can scale content properly over multiple different monitors. That is, one monitor can be 96 dpi, other 120 dpi, and third one can be 200 dpi. And all will work nicely.
However, this comes at the cost of blurriness for applications that haven’t declared themselves as DPI aware. Adding this to manifest is relatively easy for an application developer but I will leave that story for some other time. Question here will be whether user can help himself to deal better with “broken” applications.
If you don’t care for proper scaling across multiple displays, you can just turn it off. Go to Control Panel → Appearance and Personalization → Display. There just select Let me choose one scaling level for all my displays and you will be greeted with old scaling settings. Select 125% and, after log off, all applications will look sharp again.
PS: Same manifest request (and associated blurring) was present in Windows 7 but Windows 8 relaxed check a bit (if your display was up to 125% scale). I am a bit disappointed with applications that don’t have it configured yet (e.g. Google Chrome).