I have a Silverlight flashcard application. It has a copy protection feature that the user will enter a keycode, and it will hit a server and then activate the program and store a key on the user's computer. It creates a unique key based on their hardware Components. There is a slight bug in the activation where in a small number of users (1%-2% of the users), if the user open the application on a different Internet source or different IP address, it will re-ask for the keycode. This is a client-side problem and not a server side problem.
The program identifies the unique computer by getting the device ID and the GPUID.
deviceId = deviceId + gpuDeviceId;
The program uses Microsoft's [url removed, login to view] Property. In some rare cases, it will collect 3 GPUcollections which will create a different ID, then at other times it will collect only 1 which will be a different ID. This will continue to ask the user for the keycode because the DeviceID is changing.
I think we've narrowed down the issue to the GPU that's collected:
When there are multiple IDs, we add them up to get a unique ID. The odd part is that when it sees three, all three are the same device ID and that one is the same as when there is only one ID.
Could it be something like docked versus undocked? Maybe something changes if they connect an external monitor or something.
For this particular case, we could cull out all the device IDs that are the same in the collection and then add up the ones that are different. Still don't know why the GPU collection would change though.
I have log files of user's that are having this problem that can be analyzed and compared. I don't think this will be a difficult fix.
I have the source code. It is written in C#. The licensing does not use a .dll.
Please read the project first and write the word "Understood". Also write your steps and suggestions to complete the project with a short description of what you understood.