Solved QSysInfo::machineUniqueId() empty on Windows
-
@JonB I did not supposed it matters, frankly I prefer to use MinGW (old habits maybe) and I didn't see Qt 5.11 for MinGW 64bit.
@CoreyAnderson how this HP printer support is related to Qt or even Windows 10, I don't get it, you mean bug in Windows that it does not provide key for 32bit apps ? -
Ignore @CoreyAnderson 's post, he is just advertising his hyperlink! It's a scam.
You can use a 64-bit compiler with no issue. If you want to use a 32-bit compiler, you will have to do some work.
-
@JonB but I was downloading Qt 5.11.1 throught Maintenance tool and there was MinGW 32Bit not 64Bit
-
@Marek
I don't know what to say other than you have the choice of what compiler and bitted-ness are used to compile Qt, and you decide which target platforms you wish to support. In this case you have found a situation where there is a 32-bit/64-bit Windows Registry issue if you mix bitted-nesses. -
I sense a bit of miscommunication in the last few messages; @Marek and @JonB are talking about slightly different things.
@Marek's observation is correct: The Maintenance Tool does not provide a pre-built 64-bit version of Qt for MinGW.
@JonB's point is also correct: We can choose from a variety of 32-bit and 64-bit versions. (But if we want 64-bit MinGW, then we need to build Qt ourselves -- we can't just download it through the MaintenanceTool)
-
@JKSH
Ah, I don't even know what that "Maintenance Tool" is! I actually thought it might be for building Qt yourself, now I understand it gives pre-compiled versions. And you're saying it does not offer 64-bit for MinGW.@Marek
You still have two choices for your issue:-
If you use a 64-bit Qt there is no problem. That could be pre-compiled or compiled by you, and it could be MinGW, MSVC or whatever. I do not know whether you find using either a pre-supplied MSVC 64-bit (does Maint Tool have that?) or compiling for yourself a 64-bit MinGW acceptable or a pain in the ass.
-
If you use a 32-bit Qt --- perhaps the conveniently pre-compiled MinGW one --- there is a problem, because of where that looks in the Registry. You can probably address this by doing something in your app code, but we haven't investigated this yet as you haven't said which Qt 32/64-bit route you wish to pursue.
-
-
@JonB Thanks for your help.
MSVC 64Bit is provided by Maintenance Tool.
Compiling Qt on Windows with 64-Bit MinGW might be a pain ;) I'm doing this quite often on embedded platforms but then I need much less modules. What is more, I'm writing code that someone else will use in his projects, so it needs to be compatible with commercial Qt license.
I will stick to MSVC 64Bit.Thanks,
Marek -
@Marek
So it sounds like you will use 64-bit, this problem will go away and we don't need to investigate any further.
I presume all your targets will be 64-bit, none 32-bit(?).Now that we know how
QSysInfo::machineUniqueId()
relies on finding that"MachineGuid"
in the correct place in the Registry where it looks, and there's some possibility it may not find it, you might be best documenting this somewhere for both developers & end-users, and/or providing a "fallback" mechanism if it returns an empty string. -
@JonB I'm reading mac addresses of network cards when machineUniqueId returns empty string. This can be problematic especially when someone uses detachable usb->wifi adapter but I don't see other option with Qt.
-
@Marek
Well Qt is only a library providing "abstracted, convenience" functions where possible, it's not magic, so yes sometimes you have to supply your own alternatives as best you can. If you can't find anything, chances are nor can Qt.