So there is this software. When installed it somehow (probably reads file or registry entry) recognizes my windows operating system.
It's supposed to do some tasks only once per unique computer. If I uninstall the program and re install it, the software remembers that it has been installed and therefore do not do the task.
If I use system restore, software also does not do the tasks. If I load image of the system before the install, software also doesn't do the tasks.
If I re install a fresh copy of windows, then only the software does the task. IP even does not matter. Everything is the same, except it is a brand new copy of Windows operating system.
So I guess that the software reads some kind of unique operating system identifier, then connects to server to create a user profile.
So the question is? What could be those files which software uses to check system identifier? So far I have found out that there are entries under registry. WindowsNT/CurrentVersion and Windows/Cryptography but software do not rely on them.
Where else should I search? Any software which could help me find out?
Maybe it's reading the ProductId value from the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
Microsoft says:
The product key also forms the basis
for the product ID that is created
when Windows XP is installed. Each
licensed instance of Windows XP has a
unique Product ID.
Take care, for some OEM smopuiM versions, there is only one licensed instance of Windows XP. So you can find the same product ID for two PC.
You can use FileMon and RegMon by SysInternals to check what files and keys in registry are being accessed
Related
I am working on an installer of a windows application. Due to its dependencies, to make it work, multiple applications need to be installed and also some changes to the windows features (turning on some windows features) are required.
My installer is supposed to be used by companies. In companies, it can be the case that someone has the rights to install software (in program files folder) but is still restricted (for example updates are regulated by the IT department). A typical explanation for this is that someone is a local admin but not necessarily a global admin.
Can it be the case that someone is allowed to install software in the program files folder but restricted in enabling windows features? I need to know this because this would simply mean that my installer should not automatically/automated enable such windows features. It may work on my VM, but it can fail on the customer employee desktop which would cause the installation to fail due to missing rights for one specific action: enabling some windows features.
Can enabling Windows Features be blocked for local admins?
According to this answer there's no group policies to control Windows features. Therefore we could assume that you're safe for now.
I have a freeware software, which i want to install on a network share. The reason is, if the software is installed on a network share, all users which has access to this network share folder should be able to use the program.
Now, I run the setup.exe on my machine and choose on the step "destination installation" my network share \sharename\TestFolder.
The software was installaing on this sharefolder and after the installation it was possible to run the program on my computer without any errors and use it..
After that I try to start the program on other client but there is always an error message, that it starts with a false operator.
Now my question is, is there a software, which can observe on which files the program want to access when I make double click on the (program.EXE).
Thank you, I hope you can help me.
Yes, there are several tools that can monitor or observe system changes performed by a setup.exe.
Many of these tools are quite old and may not operate correctly in new versions of Windows. The most recent one I found that looks acceptable was EMCO MSI Package Builder. I never tested the monitor feature, but it is at least an updated capture product.
In my experience these monitor tools capture way too much low-level system stuff, and you will need to spend quite a bit of time to sort out what is really needed for the software to operate. If you have experience with software development you may get just as much information from using a System Internals tool such as RegMon, FileMon or ProcMon. See Microsoft site: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx . These tools are exceptionally useful and known for their small size and great feature set. You can run a ProcMon on the launch of the application executable.
It is also possible that the setup.exe is a wrapper for an MSI file. These files can be viewed with free tools such as Orca and EMCO MSI Package Builder and you can basically see what registration settings are needed for the application to operate. Try opening a command prompt and write setup.exe /a and see if it offers to create an "administrative installation point" - or similar.
If I were to guess I'd say that the software needs to have COM servers registered locally, registry keys added to each local computer and possibly you need to install a couple of runtimes on each system - for example Microsoft C runtime of a particular version. This is just a wild guess. What is the name of the software? If it is a .NET application you may need assemblies installed to the Global Assembly Cache GAC.
I would like to move the Windows 7 license that I've installed on a virtual machine to a real machine. Of course, deactivating the virtual machine.
Is it possible? If yes, how can I do so?
Thanks
If it is an OEM licence as in it was on your pc when you bought it, legally no, although it is possible, if you phoned up Microsoft and told them your motherboard had died and you had to have it replaced with another that's why you need to re activate your OEM licence it would work, if that was what happened, but its not legit if your motherboard didn't die, but its probably more legit that cracking it, that certainly isn't legal. If its a licence you bought by itself, just install it on the second pc, when you activate it, it will de active the other one. By the way, I take it you have the licence key ?, if you do just install it on the other one and type it in.
Another option is to just image the virtual machine over the top of the physical machine, e.g take a copy of it with something like clonezilla, then restore the disk image to the physical machine, this will most probably deactivate the key, but just re activate it when it prompts you using the usual activation method.
If you know what the license key is you can use slmgr command line utility that comes with windows to change the license key on the new machine and deactivate it on the old machine.
Does the Windows operating system contains any unique computer/OS id?
This is for my own software. I want to create 30 day trial/demo version.
Here is what I want to do:
When someone installs a trial I grab the unique ID, send it to server.
After the 30 day trial, if software is reinstalled, the server blocks the trial version.
So the real question is: Does Windows contains any unique IDs I could rely on?
I think that IP address is not a reliable option.
Windows has a DigitalProductId. You can access its value in registry at the following location:
LocalMachine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId
I think widows key isn't enoungh:
Windows 7 Family Pack - 3 licences for different computers at any one time;
or any pirates, etc.
You could use NetworkAdapter's MAC instead. You can get MAC quite easy, here's an example in .NET:
Read MAC Address from network adapter in .NET
Sometimes computer can have 2 interfaces, so you could combine them into one key.
I have a service installation that in order to get it to work on Win2k, I had to include instsrv.exe in the installer, since Win2k doesn't include sc.exe (which I use for XP and up) and instsrv.exe is not always installed...so I cannot count on it being there. (instsrv and sc are both used to create/install the service on the system).
I have not been able to find the license terms or distribution rights for instsrv however. Is there going to be a legal issue with me including this Microsoft exe in my own installer and therefore distributing it to the customers of the product? If you can point me to an actual license document for this exe it would be greatly appreciated.
The instsrv.exe program appears to come from the Windows 2003 Resource Kit, which you can download freely from Microsoft. The referenced page indicates that when you install it, you'll encounter the EULA (End User License Agreement), which would be where you'd read about the license terms regarding things like redistribution.
You should read that agreement yourself. The way I read it, you can't bundle the Kit with your installer, though you could certainly arrange to have it downloaded automatically and have its own installer invoked by yours, with your end user having to click to accept the Microsoft EULA at that time.
What about using a different approach? I believe for a simple service installation there are probably only a few registry keys or something to tweak. Maybe a simple script (Python or such?) could do the job as well.
I'm no legal expert, but is the issue the use of instsrv.exe or that it's lying on the PC until you uninstall your product?
Would it be redistribution if you craft your installer in such a way that you merely package instsrv.exe, unpackage during the install process, run it via a custom action, then let the installer cleanup process delete it from the temporary location?
As a big sidestep, you could change installers to WiX v3. They have standard custom actions to install services. You get the added Msi easily active directory integrated bonus. You could go with something else entirely but I assume this is a very last resort.
In the end, services are nothing more than registry entries in a specific format so you are not entirely limited to using those programs. You just get the bonus of blaming Microsoft if either instsrv or sc happen to blow up the registry.