Tag: C

Debugging an Unkillable Process

I recently encountered an issue where Microsoft Publisher would intermittently end up in an unkillable state. Publisher is started by Office interops from an NT service. The problem seems to only occur when Publisher runs in a non-interactive session (which all NT services since Vista do), and when a line feed character is present in a text shape.

Continue reading »

sudont

I'm writing a sandbox application for a larger Windows project, and I needed the ability to drop admin privileges for certain operations. I thought about going the other way and elevating only when needed, but there are problems with that approach.

Continue reading »

Remotely Set a User's Desktop Wallpaper

I recently discussed, with a coworker, the feasibility of changing a logged on user's desktop wallpaper remotely. It was an interesting problem with quite a number of challenges. The Win32 security model is very complex and I had to jump through a lot of hoops for what I thought would be a fairly simple task. Overall it was a very enlightening experience but I did learn a new appreciation for seteuid(0).

Continue reading »

Block Windows Shut Down

It's hard to describe just how much I HATE rebooting my computer. If I have to use a Windows computer for any extended period of time, then I always change update policies to disallow automatic reboots. In fact, I usually click the irritating "Remind me in ten minutes" button every ten minutes for three weeks before I finally allow Windows to restart (or until I stop the Automatic Updates service).

Continue reading »

Remove Tabs From the Windows Taskbar

I'm very picky about my desktop environment. I like windows, toolbars, icons, etc. to be arranged in a certain way. Typically, I turn off annoying prompts and nag screens in Windows, and unhide "scary" advanced options in OS X. One hard-to-fix pet peeve is when applications put an icon in the notification area (near the clock) AND leave a tab in the taskbar. This wastes valuable taskbar real estate.

Continue reading »