Vistafy Me.

I have a little time over the next couple of weeks to devote to developing WFTPD a little further.

This is a good thing, as it’s way past time that I brought it into Vista’s world.

I’ve been very proud that over the last several years, I have never had to re-write my code in order to make it work on a new version of Windows. Unlike other developers, when a new version of Windows comes along, I can run my software on that new version without changes, and get the same functionality.

The same is not true of developers who like to use undocumented features, because those are generally the features that die in new releases and service packs. After all, since they’re undocumented, nobody should be using them, right? No, seriously, you shouldn’t be using those undocumented features.

So, WFTPD and WFTPD Pro run in Windows Vista and Windows Server 2008.

But that’s not enough. With each new version of Windows, there are better ways of doing things and new features to exploit. With Windows Vista and Windows Server 2008, there are also a few deprecated older behaviours that I can see are holding WFTPD and WFTPD Pro down.

I’m creating a plan to “Vistafy” these programs, so that they’ll continue to be relevant and current.

Here’s my list of significant changes to make over the next couple of weeks:

  1. Convert the Help file from WinHelp to HTML Help.
    • WinHelp is not supported in Vista – you can download a WinHelp version, but it’s far better to support the one format of Help file that Windows uses. So, I’m converting from WinHelp to HTML Help.
  2. Changing the Control Panel Applet for WFTPD Pro.
    • CPL files still work in Windows Vista, but they’re considered ‘old’, and there’s an ugly user experience when it comes to making them elevate – run as administrator.
    • There are two or three ways to go here –
      1. one is to create an EXE wrapper that calls the old CPL file. That’s fairly cheap, and will probably be the first version.
      2. Another is to write an MMC plugin. That’s a fair amount of work, and requires some thought and design. That’s going to take more than a couple of weeks.
      3. A third option is to create some form of web-based interface. I don’t want to go that way, because I don’t want to require my users to install IIS or some other web server.
    • So, first blush it seems will be to wrap the existing interface, and secondly I’ll be investigating what an MMC should look like.
  3. Support for IPv6.
    • I already have this implemented in a trial version, but have yet to fully wire it up to a user interface that I’m willing to unleash on the world. So that’s on the cards for the next release.
  4. Multiple languages
    • There are two elements to support for multiple languages in FTP:
      1. File names in non-Latin character sets
      2. Text messages in languages other than English
    • The first, file names in different character sets, will be achieved sooner than the second. If the second ever occurs, it will be because customers are sufficiently interested to ask me specifically to do it.
  5. SSL Client Certificate authentication
    • SSL Client Certificate Auth has been in place for years – it’s a secret feature. The IIS guys warned me off developing it, saying “that’s really hard, don’t try and do anything with client certs”.
    • I didn’t have the heart to tell them I had the feature working already (but without an interface), and that it simply required a little patience.
  6. Install under Local Service and Network Service accounts
  7. Build in Visual Studio 2008, to get maximum protection using new compiler features.
    • /analyze, Address Space Layout Randomisation, SAL – all designed to catch my occasional mistakes.

As I work on each of these items, I’ll be sure to document any interesting behaviours I find along the way. My first article will be on converting your WinHelp-using MFC project to using HTML Help, with minimal changes to your code, and in such a way that you can back-pedal if you have to.

Of course, I also have a couple of side projects – because I’ve been downloading a lot from BBC 7, I’ve been writing a program to store the program titles and descriptions with the MP3 files, so that they show up properly on the MP3 player. ID3Edit – an inspired name – allows me to add descriptions to these files.

Another side-project of mine is an EFS tool. I may use some time to work on that.

6 thoughts on “Vistafy Me.”

  1. Address Space Layout Randomisation does not require VS or anything like that, its just a bit in the PE header, I’m still using VC6 and have no problems flipping that bit and get ASLR

  2. And /analyze can be done using the freely downloadable SDK compiler. I know – but there are other good reasons to stay current on the compiler technology.

  3. as there are reasons to stay with vc6, if you need to support older os versions, generates smaller files, links to msvcrt.dll so you don’t need to install any runtime etc.

  4. I understand those reasons – I’d love not to have to install so much code that is not my own, and that’s probably the biggest concern. I haven’t noticed a great increase in file size with Visual Studio 2008, and as for support for Windows 9x, ME and NT 4.0, there’s way more cost involved in keeping test systems around with so many OS versions on, than I make for supporting them.
    But that’s my experience, and yours may differ – there are many places where upgrading systems happens once every ten years, and those places presumably occasionally buy software. I don’t think that’s my market – but it may be yours, and it’s good to see someone fulfilling that need.

  5. Some other things to consider – there are a bunch of new things around running a service with least privilege, service-specific SIDs and some other things that result in a more secure service. Mike and I documented that in WSCV.

    As to compiler, there are serious reasons to get off VC 6. This may or may not affect you, but it has lousy template support. /GS support is most effective in VS 2005 and later – early versions didn’t do this as well. I don’t think it supports x64 at all, and the longer you stay on an old compiler, the worse the port is going to get. AFAIK, I can support all the way back to at least Win2k with the current compiler, so I don’t see that as a real problem, unless you’re supporting someone stuck on Win98 for some odd reason.

  6. it is possible to compile 64bit code with vc6, but its not as easy as with the new stuff, it is also possible to target win9x with VS2k8, but you must do a little bit of patching (MS changed MajorOperatingSystemVersion version in the PE header to 5 for no reason other than blocking 9x and NT4, for 9x you also need to patch a function in your exe if you use the CRT)

Leave a Reply

Your email address will not be published. Required fields are marked *