https://bugs.winehq.org/show_bug.cgi?id=47072
Bug ID: 47072 Summary: Canon DPP 4.10.20 install require Administrator Privileges Product: Wine Version: 4.6 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: ronen.rozner@gmail.com Distribution: ---
Trying to install Canon Digital Photo Professional 4.10.20 for Windows, installed msxml3 and dotnet45. Installation starts but require Administrator Privileges.
The application can be downloaded from my Gdrive with this link (no account needed), because you will need a valid product serial# to download it from Canon's site : https://drive.google.com/file/d/1pyzI3iCbTEHVPye53YvGtptjyF7YVVIQ/view?usp=s...
https://bugs.winehq.org/show_bug.cgi?id=47072
Louis Lenders xerox.xerox2000x@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Keywords| |download CC| |xerox.xerox2000x@gmail.com URL| |https://www.softpedia.com/g | |et/Multimedia/Graphic/Image | |-Convertors/Canon-Digital-P | |hoto-Professional.shtml#dow | |nload Status|UNCONFIRMED |NEW
--- Comment #1 from Louis Lenders xerox.xerox2000x@gmail.com ---
The application can be downloaded from my Gdrive with this link (no account needed), because you will need a valid product serial# to download it from Canon's site : https://drive.google.com/file/d/1pyzI3iCbTEHVPye53YvGtptjyF7YVVIQ/ view?usp=sharing
Please don`t do this. You shouldn`t share these things from private links.
The application can be downloaded apparently freely from https://www.softpedia.com/get/Multimedia/Graphic/Image-Convertors/Canon-Digi... so no need to share private links....
I can however confirm the bug. I was able to get the installer running with a hack in netapi32, i`ll attach hereafter.
Note: in a fresh WINEPREFIX it doesn`t start at all for me, i tested in an existing WINEPREFIX so probably needs some additional winetricks stuff installed. As the installer is unbearingly slow for me, i stopped to try find out what it needs.
sha1sum dppw4.10.20-installer.zip aee4adbecdf43108c4459a6344dbd3e678183e8b dppw4.10.20-installer.zip
https://bugs.winehq.org/show_bug.cgi?id=47072
--- Comment #2 from Louis Lenders xerox.xerox2000x@gmail.com --- Created attachment 64266 --> https://bugs.winehq.org/attachment.cgi?id=64266 stupid hack
Attached stupid hack that lets the installer succeed for me.
As said, i installed in an existing WINEPREFIX so might need some winetricks magic also, maybe i`ll try find out later what; i don`t know why the installer is so slow atm.
https://bugs.winehq.org/show_bug.cgi?id=47072
Louis Lenders xerox.xerox2000x@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |netapi32 Severity|major |normal
--- Comment #3 from Louis Lenders xerox.xerox2000x@gmail.com --- For now guessing component. Don`t shoot me if guess is wrong...
https://bugs.winehq.org/show_bug.cgi?id=47072
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|Canon DPP 4.10.20 install |Canon DPP 4.10.20 installer |require Administrator |fails, reports: 'installer |Privileges |requires administrator | |privileges' (netapi32 | |'USER_INFO_1.usri1_priv' | |needs to return | |'USER_PRIV_ADMIN' for login | |session user) URL|https://www.softpedia.com/g |https://web.archive.org/web |et/Multimedia/Graphic/Image |/20190426101243/https://sof |-Convertors/Canon-Digital-P |tpedia-secure-download.com/ |hoto-Professional.shtml#dow |dl/509dff1cf1a87c679bc6f274 |nload |45871a28/5cc2d984/100078921 | |/software/multimedia/graphi | |c/digital_photo/dppw4.10.20 | |-installer.zip Keywords| |Installer
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
Prerequisite: Installer needs 'winetricks -q msxml3' (another bug).
--- snip --- $ WINEDEBUG=+seh,+relay,+msi,+netapi32 wine ./dppw4.10.20-installer.exe
log.txt 2>&1
... 002a:Call KERNEL32.CreateProcessW(00000000,0034f370 L""C:\users\focht\Temp\Canon_Inc_IC_OFI_TEMP_0\Data\setup.exe"",00000000,00000000,00000000,00000410,00000000,00000000,0034db28,0034db18) ret=7db5176a ... 002d:Call KERNEL32.__wine_kernel_init() ret=7bc67e16 002d:Ret KERNEL32.__wine_kernel_init() retval=7b472c54 ret=7bc67e16 002a:Ret KERNEL32.CreateProcessW() retval=00000001 ret=7db5176a ... 002d:Call KERNEL32.CreateProcessW(00000000,0032f470 L""C:\users\focht\Temp\Canon_Inc_IC_OFI_TEMP_0\Data\software\install\UniversalInstaller.exe"",00000000,00000000,00000000,00000410,00000000,00000000,0032dc28,0032dc18) ret=7dc7d76a ... 002f:Call KERNEL32.__wine_kernel_init() ret=7bc67e16 002f:Ret KERNEL32.__wine_kernel_init() retval=7b472c54 ret=7bc67e16 002d:Ret KERNEL32.CreateProcessW() retval=00000001 ret=7dc7d76a ... 002f:Call wtsapi32.WTSQuerySessionInformationW(00000000,00000001,00000005,0032ecbc,0032ecac) ret=00467e52 002f:fixme:wtsapi:WTSQuerySessionInformationW Stub (nil) 0x00000001 5 0x32ecbc 0x32ecac 002f:Call advapi32.GetUserNameW(00000000,0032ec1c) ret=7d16f403 002f:Ret advapi32.GetUserNameW() retval=00000000 ret=7d16f403 002f:Call ntdll.RtlAllocateHeap(00110000,00000000,0000000c) ret=7d16f43a 002f:Ret ntdll.RtlAllocateHeap() retval=001dca70 ret=7d16f43a 002f:Call advapi32.GetUserNameW(001dca70,0032ec1c) ret=7d16f44c 002f:Ret advapi32.GetUserNameW() retval=00000001 ret=7d16f44c 002f:Ret wtsapi32.WTSQuerySessionInformationW() retval=00000001 ret=00467e52 002f:Call KERNEL32.lstrcpyW(0032ecc0,001dca70 L"focht") ret=00467e69 002f:Ret KERNEL32.lstrcpyW() retval=0032ecc0 ret=00467e69 002f:Call netapi32.NetUserGetInfo(00000000,0032ecc0 L"focht",00000001,0032ecb8) ret=00467e80 002f:Call KERNEL32.IsBadStringPtrW(0032ecc0,ffffffff) ret=7d1b9e25 002f:Ret KERNEL32.IsBadStringPtrW() retval=00000000 ret=7d1b9e25 002f:trace:netapi32:NetUserGetInfo ((null), L"focht", 1, 0x32ecb8) 002f:Call ntdll.RtlAllocateHeap(00110000,00000000,0000002a) ret=7d1bed4f 002f:Ret ntdll.RtlAllocateHeap() retval=001dea00 ret=7d1bed4f 002f:Call advapi32.GetUserNameW(001dea00,0032ec1c) ret=7d1bed67 002f:Ret advapi32.GetUserNameW() retval=00000001 ret=7d1bed67 002f:Call KERNEL32.lstrcmpW(001dea00 L"focht",0032ecc0 L"focht") ret=7d1beead 002f:Ret KERNEL32.lstrcmpW() retval=00000000 ret=7d1beead 002f:Call ntdll.RtlFreeHeap(00110000,00000000,001dea00) ret=7d1beecb 002f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7d1beecb 002f:Call KERNEL32.IsBadStringPtrW(0032ecc0,ffffffff) ret=7d1b9e25 002f:Ret KERNEL32.IsBadStringPtrW() retval=00000000 ret=7d1b9e25 002f:trace:netapi32:NetUserGetInfo ((null), L"focht", 0, 0x32ec1c) 002f:Call ntdll.RtlAllocateHeap(00110000,00000000,0000002a) ret=7d1bed4f 002f:Ret ntdll.RtlAllocateHeap() retval=001dea00 ret=7d1bed4f 002f:Call advapi32.GetUserNameW(001dea00,0032ebac) ret=7d1bed67 002f:Ret advapi32.GetUserNameW() retval=00000001 ret=7d1bed67 002f:Call KERNEL32.lstrcmpW(001dea00 L"focht",0032ecc0 L"focht") ret=7d1beead 002f:Ret KERNEL32.lstrcmpW() retval=00000000 ret=7d1beead 002f:Call ntdll.RtlFreeHeap(00110000,00000000,001dea00) ret=7d1beecb 002f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7d1beecb 002f:trace:netapi32:NetApiBufferAllocate (16, 0x32ec1c) 002f:Call ntdll.RtlAllocateHeap(00110000,00000000,00000010) ret=7d1bb1a3 002f:Ret ntdll.RtlAllocateHeap() retval=001db890 ret=7d1bb1a3 002f:Call KERNEL32.GetEnvironmentVariableW(7d1c91b0 L"HOME",00000000,00000000) ret=7d1bea88 002f:Ret KERNEL32.GetEnvironmentVariableW() retval=00000000 ret=7d1bea88 002f:trace:netapi32:NetApiBufferAllocate (50, 0x32ecb8) 002f:Call ntdll.RtlAllocateHeap(00110000,00000000,00000032) ret=7d1bb1a3 002f:Ret ntdll.RtlAllocateHeap() retval=001dea00 ret=7d1bb1a3 002f:trace:netapi32:NetApiBufferFree (0x1db890) 002f:Call ntdll.RtlFreeHeap(00110000,00000000,001db890) ret=7d1bc128 002f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7d1bc128 002f:Call KERNEL32.GetEnvironmentVariableW(7d1c91b0 L"HOME",001dea2e,00000000) ret=7d1beb18 002f:Ret KERNEL32.GetEnvironmentVariableW() retval=00000000 ret=7d1beb18 002f:Ret netapi32.NetUserGetInfo() retval=00000000 ret=00467e80 002f:Call wtsapi32.WTSFreeMemory(001dca70) ret=00467edd 002f:Call ntdll.RtlFreeHeap(00110000,00000000,001dca70) ret=7d16f194 002f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7d16f194 002f:Ret wtsapi32.WTSFreeMemory() retval=00175498 ret=00467edd 002f:Call netapi32.NetApiBufferFree(001dea00) ret=00467eee 002f:trace:netapi32:NetApiBufferFree (0x1dea00) 002f:Call ntdll.RtlFreeHeap(00110000,00000000,001dea00) ret=7d1bc128 002f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7d1bc128 002f:Ret netapi32.NetApiBufferFree() retval=00000000 ret=00467eee ... 002f:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,0032e66c L"20190426123655:INSTALL:UIx:INFORMATION:Error=UIx is not supported.\r\n\e8482\353e\7bccc\f7be\e72c2\353e\7bcc\e8182\6e7c\7bd1\6e7d\7bd1\0d60\7e39\0002",00000044,0032d914,00000d55,00000000,00000000) ret=004b058d 002f:Ret KERNEL32.WideCharToMultiByte() retval=00000044 ret=004b058d ... 002f:Call gdiplus.GdipMeasureString(01b05438,00190ec0 L"Installation program of Digital Photo Professional 4 requires administrator privileges.",ffffffff,0018e898,0032df7c,00190fe8,0032df8c,0032dfbc,0032dfb8) ret=004441a8 --- snip ---
Trace log doesn't reveal it, one has to debug the sub-installer.
--- snip --- ... 00467E69 | 8D85 D8FDFFFF | lea eax,dword ptr ss:[ebp-228] 00467E6F | 50 | push eax 00467E70 | 56 | push esi 00467E71 | 8D85 E0FDFFFF | lea eax,dword ptr ss:[ebp-220] 00467E77 | 50 | push eax 00467E78 | 6A 00 | push 0 00467E7A | FF15 00D44C00 | call dword ptr ds:[4CD400] ; NetUserGetInfo 00467E80 | 85C0 | test eax,eax 00467E82 | 75 15 | jne universalinstaller.467E99 00467E84 | 33C9 | xor ecx,ecx 00467E86 | 8B85 D8FDFFFF | mov eax,dword ptr ss:[ebp-228] 00467E8C | 8378 0C 02 | cmp dword ptr ds:[eax+C],2 ; ui->usri1_priv 00467E90 | 0F45F1 | cmovne esi,ecx 00467E93 | 89B5 D4FDFFFF | mov dword ptr ss:[ebp-22C],esi 00467E99 | C745 FC FEFFFFFF | mov dword ptr ss:[ebp-4],FFFFFFFE 00467EA0 | E8 27000000 | call universalinstaller.467ECC 00467EA5 | 85F6 | test esi,esi 00467EA7 | 0F95C0 | setne al 00467EAA | 8B4D F0 | mov ecx,dword ptr ss:[ebp-10] 00467EAD | 64:890D 00000000 | mov dword ptr fs:[0],ecx 00467EB4 | 59 | pop ecx 00467EB5 | 5F | pop edi 00467EB6 | 5E | pop esi 00467EB7 | 5B | pop ebx 00467EB8 | 8B4D E4 | mov ecx,dword ptr ss:[ebp-1C] 00467EBB | 33CD | xor ecx,ebp 00467EBD | E8 E6090300 | call universalinstaller.4988A8 00467EC2 | 8BE5 | mov esp,ebp 00467EC4 | 5D | pop ebp 00467EC5 | C3 | ret --- snip ---
The installer checks for 'USER_INFO_1.usri1_priv' == 'USER_PRIV_ADMIN' for current login session user. Wine initializes the field by default to zero ('USER_PRIV_GUEST'), hence the installer failure.
Wine source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/netapi32/netapi32.c#l...
--- snip --- 2120 /************************************************************ 2121 * NetUserGetInfo (NETAPI32.@) 2122 */ 2123 NET_API_STATUS WINAPI 2124 NetUserGetInfo(LPCWSTR servername, LPCWSTR username, DWORD level, 2125 LPBYTE* bufptr) 2126 { 2127 NET_API_STATUS status; 2128 TRACE("(%s, %s, %d, %p)\n", debugstr_w(servername), debugstr_w(username), 2129 level, bufptr); 2130 status = NETAPI_ValidateServername(servername); 2131 if (status != NERR_Success) 2132 return status; 2133 2134 if(!NETAPI_IsLocalComputer(servername)) 2135 { 2136 FIXME("Only implemented for local computer, but remote server" 2137 "%s was requested.\n", debugstr_w(servername)); 2138 return NERR_InvalidComputer; 2139 } 2140 2141 if(!NETAPI_FindUser(username) && !NETAPI_IsCurrentUser(username)) 2142 { 2143 TRACE("User %s is unknown.\n", debugstr_w(username)); 2144 return NERR_UserNotFound; 2145 } 2146 2147 switch (level) 2148 { ... 2211 case 1: 2212 { 2213 static const WCHAR homedirW[] = {'H','O','M','E',0}; 2214 PUSER_INFO_1 ui; 2215 PUSER_INFO_0 ui0; 2216 /* sizes of the field buffers in WCHARS */ 2217 int name_sz, password_sz, home_dir_sz, comment_sz, script_path_sz; 2218 2219 password_sz = 1; /* not filled out for security reasons for NetUserGetInfo*/ 2220 comment_sz = 1; 2221 script_path_sz = 1; 2222 2223 /* get data */ 2224 status = NetUserGetInfo(servername, username, 0, (LPBYTE *) &ui0); 2225 if (status != NERR_Success) 2226 { 2227 NetApiBufferFree(ui0); 2228 return status; 2229 } 2230 name_sz = lstrlenW(ui0->usri0_name) + 1; 2231 home_dir_sz = GetEnvironmentVariableW(homedirW, NULL,0); 2232 /* set up buffer */ 2233 NetApiBufferAllocate(sizeof(USER_INFO_1) + 2234 (name_sz + password_sz + home_dir_sz + 2235 comment_sz + script_path_sz) * sizeof(WCHAR), 2236 (LPVOID *) bufptr); 2237 2238 ui = (PUSER_INFO_1) *bufptr; 2239 ui->usri1_name = (LPWSTR) (ui + 1); 2240 ui->usri1_password = ui->usri1_name + name_sz; 2241 ui->usri1_home_dir = ui->usri1_password + password_sz; 2242 ui->usri1_comment = ui->usri1_home_dir + home_dir_sz; 2243 ui->usri1_script_path = ui->usri1_comment + comment_sz; 2244 /* set data */ 2245 lstrcpyW(ui->usri1_name, ui0->usri0_name); 2246 NetApiBufferFree(ui0); 2247 ui->usri1_password[0] = 0; 2248 ui->usri1_password_age = 0; 2249 ui->usri1_priv = 0; 2250 GetEnvironmentVariableW(homedirW, ui->usri1_home_dir,home_dir_sz); 2251 ui->usri1_comment[0] = 0; 2252 ui->usri1_flags = 0; 2253 ui->usri1_script_path[0] = 0; 2254 break; 2255 } ... 2286 default: 2287 TRACE("Invalid level %d is specified\n", level); 2288 return ERROR_INVALID_LEVEL; 2289 } 2290 return NERR_Success; 2291 } --- snip ---
Microsoft documentation USER_INFO_1 structure:
https://docs.microsoft.com/en-us/windows/desktop/api/lmaccess/ns-lmaccess-_u...
--- quote --- typedef struct _USER_INFO_1 { LPWSTR usri1_name; LPWSTR usri1_password; DWORD usri1_password_age; DWORD usri1_priv; LPWSTR usri1_home_dir; LPWSTR usri1_comment; DWORD usri1_flags; LPWSTR usri1_script_path; } USER_INFO_1, *PUSER_INFO_1, *LPUSER_INFO_1;
...
usri1_priv
Type: DWORD
The level of privilege assigned to the usri1_name member. When you call the NetUserAdd function, this member must be USER_PRIV_USER. When you call the NetUserSetInfo function, this member must be the value returned by the NetUserGetInfo function or the NetUserEnum function. This member can be one of the following values. For more information about user and group account rights, see Privileges. Value Meaning
USER_PRIV_GUEST
Guest
USER_PRIV_USER
User
USER_PRIV_ADMIN
Administrator --- quote ---
$ sha1sum dppw4.10.20-installer.zip aee4adbecdf43108c4459a6344dbd3e678183e8b dppw4.10.20-installer.zip
$ du -sh dppw4.10.20-installer.zip 231M dppw4.10.20-installer.zip
$ wine --version wine-4.6-251-g8582615894
Regards
https://bugs.winehq.org/show_bug.cgi?id=47072
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Canon DPP 4.10.20 installer |Canon DPP 4.10.20 installer |fails, reports: 'installer |fails, reports: 'installer |requires administrator |requires administrator |privileges' (netapi32 |privileges' (netapi32 |'USER_INFO_1.usri1_priv' |'USER_INFO_1.usri1_priv' |needs to return |needs to reflect privileges |'USER_PRIV_ADMIN' for login |for Administrator users) |session user) |
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
slightly changed the summary to indicate your solution might not just go for the cheapest way, that is changing the hard-coded default into another one, but rather determine whether the user is part of Administrators group.
Regards
https://bugs.winehq.org/show_bug.cgi?id=47072
--- Comment #6 from Ronen R ronen.rozner@gmail.com --- (In reply to Louis Lenders from comment #2)
Created attachment 64266 [details] stupid hack
Attached stupid hack that lets the installer succeed for me.
As said, i installed in an existing WINEPREFIX so might need some winetricks magic also, maybe i`ll try find out later what; i don`t know why the installer is so slow atm.
Thank you. You need to install msxml3 and dotnet45. Also, on a 32 bit arch.
https://bugs.winehq.org/show_bug.cgi?id=47072
--- Comment #7 from Louis Lenders xerox.xerox2000x@gmail.com ---
Thank you. You need to install msxml3 and dotnet45. Also, on a 32 bit arch.
Hi, I also tried to start the application itsself, but it bails out with ''Insuffictient Memory``. With native gdiplus or the hack below its starts for me.
I will open a new bugreport for that, but it would be nice to know if you can confirm that; I only have 4GB memory, an I don`t know what the specs for this program are, so not 100% sure how valid this bug is. However because native gdiplus works around it it`s still valid bug???
hack:
diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c index 470bcd20ce..218f1bf85d 100644 --- a/dlls/gdiplus/region.c +++ b/dlls/gdiplus/region.c @@ -1041,7 +1041,7 @@ static GpStatus get_path_hrgn(GpPath *path, GpGraphics *graphics, HRGN *hrgn) if (stat == Ok) { *hrgn = PathToRegion(graphics->hdc); - stat = *hrgn ? Ok : OutOfMemory; + // stat = *hrgn ? Ok : OutOfMemory; }
gdi_transform_release(graphics);
https://bugs.winehq.org/show_bug.cgi?id=47072
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Depends on| |42423 CC| |dark.shadow4@web.de
--- Comment #8 from Fabian Maurer dark.shadow4@web.de --- Still present as of wine-4.18.
Also linking the msxml3 issue.
https://bugs.winehq.org/show_bug.cgi?id=47072
--- Comment #9 from Fabian Maurer dark.shadow4@web.de --- Still present as of wine-5.5. Though this regressed recently, the installer is also affected by bug 48961.
https://bugs.winehq.org/show_bug.cgi?id=47072
Stéphane Magnenat stephane@magnenat.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stephane@magnenat.net
https://bugs.winehq.org/show_bug.cgi?id=47072
jordantiste@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jordantiste@gmail.com
--- Comment #10 from jordantiste@gmail.com --- This bug is still present in wine 6.18. I have attempted the "hack" mentioned in this thread, but I fail to compile wine due to missing 32 bit libraries... Is there a version out there with the bug fixed?
https://bugs.winehq.org/show_bug.cgi?id=47072
lesebas sebdeligny@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebdeligny@gmail.com
--- Comment #11 from lesebas sebdeligny@gmail.com --- The bug is still present with DPP 4.18.10 and Wine 9.1
https://bugs.winehq.org/show_bug.cgi?id=47072
--- Comment #12 from lesebas sebdeligny@gmail.com --- (In reply to lesebas from comment #11)
The bug is still present with DPP 4.18.10 and Wine 9.1
... and that's a pity as the software is running well under wine 9.1 if you copy the files and the registry keys from a windows installation. See dedicated wine page to DPP (https://appdb.winehq.org/objectManager.php?sClass=version&iId=31400&...)