Moore's Mind

Monday, May 01, 2006

Peer Collaboration - Inviting

My third article about Peer Collaboration - Inviting in Windows Vista has been posted at Code Project. Next topic will be about Contacts.

Monday, April 24, 2006

Peer Collaboration - Application Registration

My second article about Peer Collaboration - Application Registration has been posted at Code Project. Next up is Invitations to People Near Me. Enjoy.

People Near Me Article Posted

My first article about Peer Collaboration - People Near Me has just been posted on Code Project.

Here's a video and useful comments about Vista Collaboration over at Channel 9.

Wednesday, April 19, 2006

Well-known security identifiers in Windows operating systems

If you ever poke around the registry like I do from time to time and wondered what all those SID's are under HKEY_USERS, then this KB article will be useful: Well-known security identifiers in Windows operating systems

Tuesday, April 18, 2006


I've been using the PeerCollabRegisterApplication API to register applications. When the registration type is PEER_APPLICATION_CURRENT_USER it makes sense. However, when the registration type is PEER_APPLICATION_ALL_USERS, I see an odd behavior. Under User1 account, I register Notepad for All Users. When I login to User2 account and enumerate what's registered for All Users, I would expect to see Notepad, however, I don't.

I'm using the February CTP of Windows Vista. Any comments is appreciated.

Sunday, April 16, 2006


So in my first article about the new peer-to-peer collaboration features in Windows Vista, I came across something interesting.

After registering for events, I successfully get notifications when a user account on the subnet signs into People Near Me.

I noticed that when the screen saver kicks in, collaboration applications receieve a DELETED event. I suppose this makes sense, since the screen saver is set to force the user to re-login.

I also noticed that when remote user accounts that are signed-in, log out, there is no DELETED event. I think this might be a bug. I'm only testing with multiple virtual machines on one computer, but the behavior is inconsistent with what I'd expect.

Writing Article Again and MVP

After a couple of months break, I'm finally back to writing peer-to-peer articles. Expect the next one in a couple of days.

During this break, I was awarded a Microsoft MVP for Windows Networking. Besides recognition of my contribution to the public domain, it comes with some goodies, including a much needed MSDN media set.

Tripp / Ravi, if you had anything to do with this, a BIG thanks to you.

Monday, February 27, 2006

Just installed the February CTP of Vista, when I call PeerCollabSignin to sign-in, a PEER_E_PRIVACY_DECLINED error is returned. There is no documentation on this error code.

I'm guessing, its because I haven't visited Control Panel, People Near Me and agreed to the privacy statement.

When I run the Windows Collaboration application, it appears to launch a COM surrogate process that pops up the "Set up People Near Me" window and gets me to set my display name and agree to the privacy statement.

In my opinion, this same behavior should be built-in to the PeerCollabSignin method when the sign-in flags are either NEARME or ALL.

Comments are welcome.

Saturday, February 25, 2006

Bug in PeerGroupIssueCredentials

After trying to figure out how this function works for nearly a week now, I've come to the conclusion, its not working as advertised. Part of the problem, is that none of Microsoft's example code uses this function.

There are three ways to use PeerGroupIssueCredentials:

1) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, NULL, 0, ppwzInvitation)

In this form, NULL credentials are passed. The information (member data and credentials) stored in the peer database is used. This is a useful way to re-issue a lost invitation.

2) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, pCredentialInfo, 0, ppwzInvitation)

In this form, new credentials can be passed in order to generate a new invitation. Typically, this would extend the expiry date of the member or change their role or friendly name. I get a valid invitation. However, when I use this invitation to re-join the group, the updated credentials are not taken.

3) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, pCredentialInfo, 1, ppwzInvitation)

Same as 2) except the newly created GMC (invitation) is published to the group and automatically picked up by the member. When the member connects or is connected, I see the PEER_GROUP_EVENT_MEMBER_CHANGED event with changeType=PEER_MEMBER_JOINED. However, again, the updated credentials are not taken.

If anyone has a working example, showing the expiry date of a member being updated correctly using PeerGroupIssueCredentials, I would really appreciate some help.

The other interesting limitation that I came across is that there doesn't appear to be a way to send a change to PEER_MEMBER.pwzAttributes back to the group.