If you are like me, you just NEED to try out new bits as soon as you can get your hands on them. Yesterday the Windows 8 Developer Preview was released to public and many of my co-workers and friends tested like hell.
As I don’t have so many spare computers at home and I do not want to buy a tablet just yet, I chose my 6 year old Dell Latitude D510 to be the first Windows 8 Client machine I own. The problem already sticks out of my last sentence: the age. Of course, there is no driver support for any OS above Windows XP. Luckily, Windows 7 only couldn’t find a driver for graphics and sound. Quite essential, eh? But luckily Dell still had all drivers for download which worked just fine.
Windows 8 does not seem to be so kind and rejects both drivers. That does not make a very good notebook, don’t you think? So I remembered that Win8 downloaded a WLAN driver via Windows Update and I took a look it it’s driver .inf. One line immediately got my attention: “Compatible = 1″ in the [Version] section. So I copied it to both other drivers and … one, the one for the sound, actually worked. It invalidated the drivers’ signature but well, that’s not a surprise, is it? The sound worked fine.
The video driver still does not like to be installed and I am working on a way to bend the rules for this one as well.
I hope this could help you guys a little. Have fun testing!
If you are testing the Microsoft Application Compatibility Toolkit, you might want to choose the clients wisely. If you are “lazy” and just want to try the agent out and install it on a Windows 7 SP1 machine, you will end up with the .XML files in the “failed”-directory and the following event-log entries:
Error Source: ACUpload EventID:0
ACTUPLOAD: Microsoft.ApplicationExperience.Common.ObjectFramework.PersistenceException: Persistence_FlushSqlError —> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint “Logical_Machine_OS_ForeignKey”. The conflict occurred in database “ACT-Demo”, table “dbo.OS”, column ‘osID’.
The SQL Key here indicated it tried something regarding the OS Key. So a quick look in my file showed this in the 5th line of the XML:
<OsInfo Id=”6.1.1” MacAddress=”…
I manually changed that number to 6.0.0 and the file got imported correctly. The machine was listed as Vista now. Version 6.1.0 is for Windows 7, 6.1.1 is for Windows 7 Sp1, but that’s nor yet in the ACT Database. Nothing serious, just for those of you how didn’t see that coming, like myself
Designing a Windows 7 Client can be quite complicated, especially when you face a customer that wants to set everything there is to match his vision. In this particular case the customer wanted build-in Windows 7 Gadgets which connect to the internet not to appear in the Gadget list.
A little searching didn’t help me, I even found a TechNet thread where a Microsoft colleague stated that there is no way to turn single gadgets on and off, you can just disable the whole feature.
As a techie I wasn’t satisfied with that answer and pulled Sysinternals Process Monitor out of my sleeve… well, a USB stick. If a user right-clicks a gadget in the list, he is presented with a uninstall option. Using this one will add the filename of the gadget to the settings.ini in “%userprofile%\Windows Sidebar”.
So my solution is to use a Group Policy (Extention) to edit the .ini-file as I need it. Look at the [Root] section and the “PickerDefaultPackageSkipList” property. There you can add all the Gadgets you don’t want to see in the list.
This will remove the Weather- and Currency-Gadget from the list. Of course, the user can still re-add this one, but you could also delete the files as well. From here you can customize the solution to your needs.
Go Go Gadgetto Blogpost!
When using Windows PE (in my case version 3.0) for deployment, you might have already your share of problems that can occur while executing a task sequence.
I just had the “opportunity” to see a new one at a customer’s test site. It happened at unusual times, like in the middle of the image transfer or directly after it. The logs showed that the client was unable to reach his server. But why that? Physical connectivity was tested and ok and it never happened when running Windows 7 itself on the same machine.
It took me a bit because this one isn’t something you stumble upon everyday: the client lost his IP! Why? A DHCP lease time of 10 minutes! So, if a task took more than 10 minutes without a reboot, the IP was gone and the sequence ended in an error.
The lession learned here is that the DHCP Client in Windows PE doesn’t refresh his lease on time (or at all). Doh!
PS: Please don’t ask why this lease time was set at the DHCP server
After all the reviews on the internet I finally could get my hands on a Windows Phone 7 and try it out myself. I owned Windows driven phones for six years now and also have some experience with its competitors, including Android, Blackberry and iPhone. So I got my share of the “torture”. Especially when it comes to a smooth interface, Apple got it right first and pretty much polished this up to perfection. When it comes to a professional usage on the other hand, Blackberry and Windows Mobile were the operating systems to go with.
So let’s take a look and start with my negative thoughts:
Incomplete synchronization options! When Windows Mobile 6.5 hit my phone and the Exchange 2010 sent me that neat little e-mail where it told me I could now send SMS via Outlook, I was so happy! Finally, writing SMS with my PC and free backup of my messages in my Exchange account. And now? Gone! Didn’t make it into the final release, no reasons given. Exchange tasks share this fate as well, no option to synchronize them! And why? I talked with a MVP and the reason seems simple enough: US users don’t use these techniques frequently enough to be important for a release. Let’s see if this changes with the first major update in the first quarter of 2011.
Also, in a session about the phone the speaker told us about the OneNote implementation. I am a frequent user of its big brother in the Office suite and use it to its full extend: notes, pictures, drawings and even files get imbedded. It enables me to be very creative when it comes to taking notes and putting my ideas to “paper”. Windows Phone 7 also has OneNote and can sync all its data between different services, which is nice. But: You cannot limit what gets synched and what doesn’t. You can only disable synch completely. So if you are like me and pile up a lot of data in those notes, you will need a good data plan to cope with that!
And yes, no copy & paste (do I really need that? Context sensitive menus do wonders!) and no weekly overview in the calendar. I’d call it a minor annoyance.
That’s all the negative points I could make out in this little time. Now let’s turn around and look at the bright side!
Responsiveness! Yes, it IS great. It feels perfect, fast and does exactly what you want. Program switching is fast and nice to look at, animations and transitions are fluid. Big thumbs up there! Awesome e-mail support! You can even use the Microsoft ActiveSync with Google Mail! And finally you have the option to have more than one Exchange servers configured (really? This is more often used than short messages or tasks?). It really combines all the data you have in a very cool way. Contacts from all services get merged into one, but you can always see where the telephone number you are just looking at in the contact sheet is coming from. If you have several calendars, you can assign colors or hide them. The phones calendar shows all the appointments at once, each with the right color, so you can easily see if it is e. g. private or business.
I can’t really say much about third party applications. I had access to the marketplace and it was full with stuff, both free and commercial. I don’t think there will be a lack of use(-less) apps to download.
Overall: I cannot wait to throw my HTC Touch Diamond 2 into the dustbin and start playing with one of HTC’s Phone 7 models! It is a cool step in the right direction, they surely didn’t invent something new, but I like it very, very much. If you are planning on a new phone and don’t want to be one of Apple’s Zombies, you really should check it out!
At some point in the lifecycle of hardware you are in the position to consider an upgrade to achieve better performance without the cost of a complete renewal of the whole system. In most cases, adding some memory does very well. But what if do not have an up-to-date inventory of all the clients out there? You could send out your apprentice-minions, use scripts or just utilize the mighty Configuration Manager!
With little effort you can extend the hardware inventory so you will get to know
To get your hands on this information, you have to modify the SMS_DEF.MOF on your primary sites. There are two WMI queries that need to run on the client. The first one gets detailed information about every installed module and the second one is used to determine the total and used slots on the mainboard. This is inspired by some wise guy from the myITforum.
The MOF-File in question is located in the following location: <smsinstalldir>\inboxes\clifiles.src\hinv
Be sure to make a backup and, to be on the safe side, do not test this in a productive environment. It’s unlikely that it causes trouble, but we should always fear Murphy’s Law!
Just add the following code at the bottom of the MOF-File and save it.
//* Class: Physical Memory
//* Derived from: (nothing)
//* Auslesen der Speicherinformationen pro installiertem Modul
SMS_Group_Name (“Physical Memory”),
class Win32_PhysicalMemory : SMS_Class_Template
[SMS_Report (TRUE)] string BankLabel;
[SMS_Report (TRUE), SMS_Units(“Megabytes”)] uint64 Capacity;
[SMS_Report (TRUE)] string Caption;
[SMS_Report (TRUE)] string DeviceLocator;
[SMS_Report (TRUE)] uint16 FormFactor;
[SMS_Report (TRUE)] string Manufacturer;
[SMS_Report (TRUE)] uint16 MemoryType;
[SMS_Report (TRUE)] uint32 PositionInRow;
[SMS_Report (TRUE)] uint32 Speed;
[SMS_Report (TRUE),Key] string Tag;
[SMS_Report (TRUE),Key] string CreationClassName;
//* Class: Physical Memory Array
//* Derived from: (nothing)
//* Auslesen der verfügbaren Speicherslots
SMS_Group_Name (“Physical Memory Array”),
class Win32_PhysicalMemoryArray : SMS_Class_Template
[SMS_Report (FALSE)] string Caption;
[SMS_Report (FALSE)] string CreationClassName;
[SMS_Report (FALSE)] string Description;
[SMS_Report (FALSE)] uint16 Location;
[SMS_Report (FALSE)] string Manufacturer;
[SMS_Report (TRUE), SMS_Units(“Megabytes”)] uint32 MaxCapacity;
[SMS_Report (TRUE)] uint16 MemoryDevices;
[SMS_Report (FALSE)] uint16 MemoryErrorCorrection;
[SMS_Report (FALSE)] string Model;
[SMS_Report (FALSE)] string Name;
[SMS_Report (FALSE)] string OtherIdentifyingInfo;
[SMS_Report (FALSE)] string PartNumber;
[SMS_Report (FALSE)] boolean PoweredOn;
[SMS_Report (FALSE)] boolean Removable;
[SMS_Report (FALSE)] boolean Replaceable;
[SMS_Report (FALSE)] string SerialNumber;
[SMS_Report (FALSE)] string SKU;
[SMS_Report (FALSE)] string Status;
[SMS_Report (TRUE), Key] string Tag;
[SMS_Report (FALSE)] uint16 Use;
[SMS_Report (FALSE)] string Version;
As you can see, you can gather much more details if you switch some of the “FALSE” values to TRUE. The next time the client updates his policy, the new code will be compiled on the client. The next scheduled hardware inventory will execute the new queries and report the results back to the assigned site server. When this happens, two new tables will be created in the CfgMgr-Database. In this case, this would be:
Of course, this alone won’t help us so much. To make the data readable, we can create a report. I have created a report that combines both tables to show you the details of each installed module, enriched with the information how many slots there are and how much of them are still unused. Feel free to change the SQL statement to your needs.
To make things easier, you can download the report’s .MOF-file for quick import into the CfgMgr.
Download: CfgMgr RAM Report MOF
earlier this year we finally stepped forward and configured our Exchange 2010 to utilize Unified Messaging to support us with cool mailboxes and that kind of stuff. In the testing phase I installed the Japanese UM language pack to hear what it’s like. Now, as the server is in a productive environment, I wanted to clean things up and uninstall this pack as it’s not needed.
The TechNet has this to say:
In Microsoft Exchange Server 2010, you can manage UM languages on Unified Messaging servers using the Exchange Management Console or the Exchange Management Shell. However, to remove a language from the list on a UM dial plan, you must remove the appropriate UM language pack from the Unified Messaging server by using the Setup.com /RemoveUmLanguagePack command. After you remove the UM language pack from the Unified Messaging server, the language won’t be available when you configure a UM dial plan. You can view the UM language packs that are installed by viewing the properties of the Unified Messaging server or using the Get-UMServer cmdlet.
At this point you might stop reading the article, as the essential information, the setup.com-command, is quite simple. But when you try to execute this, it will fail like this:
d:\Program Files\Microsoft\Exchange Server\V14\Bin>Setup.com /RemoveUmLanguagePack:ja-JP Welcome to Microsoft Exchange Server 2010 Unattended Setup Preparing Exchange Setup Copying Setup Files d:\Program Files\Microsoft\Exchange Server\V14\Bin>
It just quits right there, no error, no logfile and no event at all. Supplying the /s parameter for the language pack source does not help either. Here is the catch: the setup.com on your server is a DIFFERENT from the one on your Exchange 2010 DVD! You have to use the one on the DVD to succeed. This information actually in the TechNet:
Caution: You can’t use the Setup.com file that’s located in the \Bin folder to remove a UM language pack after you’ve installed any updates for Exchange 2010. You must use the Setup.com file from the Exchange 2010 DVD or the downloaded source files. If you don’t, you’ll see the following error: There is a version mismatch between the running application and the installed application.
If you run it from the DVD, it will look like this:
M:\>Setup.com /RemoveUmLanguagePack:ja-JP Welcome to Microsoft Exchange Server 2010 Unattended Setup Preparing Exchange Setup The following Unified Messaging language packs will be removed: UM Language Pack for ja-JP Performing Microsoft Exchange Server Prerequisite Check Configuring Microsoft Exchange Server UM language pack for (ja-JP) ......................... COMPLETED The Microsoft Exchange Server setup operation completed successfully.
DirectAccess is a great technology and I love to use it. If I get connection problems, I just open up my command line and examine the ipconfig output to see if something’s wrong. But is this something all your customers and colleagues are capable to do? I think not. Especially in rather large deployments, DirectAccess might put your help desk under a lot of pressure.
To reduce such calls and ease the complexity of debugging actual problems, Microsoft’s DirectAccess Connectivity Assistant might come in handy. It’s a small tool that notifies the user of his current connection status and helps to provide valuable information to the help desk.
So let me show it to you in action.
After setup it will show up in the user’s tray bar.
A simple single click informs about the current status (as does the tooltip).
A right-click offers two options: “Advanced Diagnostics” and a DNS preferation setting (we will come to that later)
The “Advanced Diagnostics” window offers more detailed information about the status and will generate log files upon its launch. Those can be send via the “Email logs” button to a prespecified address. It also has a link to your company’s help desk web page.
You will need to use the supplied ADMX/ADML files to configure the agent via Group Policy.
To do this, on your Domain Controller, copy the “DirectAccess Connectivity Assistant GP.admx” file to the folder “%systemroot%\PolicyDefinitions” and then copy the “DirectAccess Connectivity Assistant GP.adml” file to the folder “%systemroot%\PolicyDefinititions\language”. For example “%systemroot%\PolicyDefinitions\en-us” or “%systemroot%\PolicyDefinitions\de-DE”.
After that, you can launch the Group Policy Management MMC, open your DirectAccess GPO and navigate to “Computer Configuration / Administrative Templates / DirectAccess Connectivity Assistant”. You can now specify a couple of settings needed to use the tool.
At this point, I would like you to read the Deployment Guide supplied with the download, as it will help you to successfully deploy and configure your Assistant.
Bitlocker is a nice piece of security technology. My company, working mainly in IT consulting, uses only notebooks and of course needs to transport sensitive data from time to time. So, since Vista we use BitLocker to protect our valuable information from theft, e. g. in case of a stolen notebook. We also deployed it for some customers.
One question is always asked: what about the performance loss? I don’t have much knowledge about how exactly BitLocker works under the hood, but I of course had the general experience that BitLocker secured systems are not slow at all. So I got myself a second hard drive for my notebook and ran a small test to clarify this question based on my hardware. This benchmark was mainly intended for me, but I decided to share the data anyway.
The test machine:
Lenovo ThinkPad T61, Intel Core2Duo T7500 2.2 GHz, 4 GB RAM
Hitachi HDD, SATA, 2.5″, 100 GB, 7200 RPM
Windows 7 Enterprise x64
I used ATTO as the benchmarking tool. The test process was simple: two runs without BitLocker, two runs with it.
For the read-performance there wasn’t a real performance drop, as you can see in the screenshots.
The write-performance dropped by about 4.5%. In my opinion, that isn’t bad at all. I’ve seen worse results for TrueCrypt and others, but I don’t want to compare software here.
Now of course, one has to decide how to interpret the result. Obviously it is limited to the used hardware, but I would say it won’t be any worse on a ThinkPad T500. Then again, this was a synthetic benchmark which does not reflect the normal workload or work-pattern. Anyway, my “feeling”, the performance-loss cannot be high, is backed up.
Every last business day of the month, freelancers working for our company access our SharePoint Portal to enter their project work times. This time, they got an “Access Denied” error instead of the usual homepage. Trying to access “www.someportal.com” would result in the error shown below. On the other hand, directly accessing the time sheet manager via “www.someportal.com/time/” was successful.
The first suspect was of course the main user and group setting of the portal. But nothing had changed and the “freelancer” group still had it’s permission to view the homepage. As the access rights were inherited down to the time sheet manager, which was accessible, that couldn’t be the problem.
Then I noticed that one particular thing was different with the URL displayed in the IE address bar. Instead of the usual
” https://www.someportal.com/_layouts/AccessDenied.aspx?Source=%2fsomepage ”
I got this:
” http://www.someportal.com/_layouts/AccessDenied.aspx?Source=somepage&Type=list&name=%7B12151589%2D7C0B%2D40DE%2DBD92%2DADB851B3D78E%7D ”
The additional GUID leads to some list, as you can see a little earlier in the URL. Now you can of course search you content database or, if you want to save time, use a little tool. For this case I stumbled upon this one: The Sharepoint Explorer by Ontolica. Run it on your portal server with an user that has full access to the site. This way, you can find the list in question quite quickly.
In most cases, identifying the list is the solution, as you then know where you have to review the permissions. In my case, this was a dead end, as the permissions were correct.
Going on, I copied the Windows user account of a freelancer and gave it full permissions. Looking through “their eyes” I found a new report viewer web part on the homepage which was targeted at the freelancer group, so I couldn’t see it with my account. This web part was added a few days earlier and obviously not tested properly. The “read” permission was not enough to display it, so the homepage was denied. I granted the freelancer group participation-level access to the report-item, which finally solved the problem.