http://bugs.winehq.org/show_bug.cgi?id=30489
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|-unknown |advapi32 Summary|Can't install |"SmartDeviceMonitor" |"SmartDeviceMonitor for |client/admin installers |Admin" from ricoh |from RICOH hang due to | |advapi32.RegSetKeySecurity | |being a stub
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-04-20 17:14:57 CDT --- Hello,
this seems to be the first installer/app that really expects setting registry security to work. If you search for "RegSetKeySecurity" there are others in bugzilla that continue despite the stub.
Affects both downloads, "SmartDeviceMonitor" for Client 8.9.4.0 and "SmartDeviceMonitor" for Admin 8.2.1.0
--- snip --- 002c:Call KERNEL32.LoadLibraryExA(00937528 "C:\users\focht\Temp\{E5EEF599-4C83-4FF7-A0E1-DBC396F86E9F}\{C138D676-4F0F-4FDE-8BE5-26CFD3566DCD}\PMCEnd.dll",00000000,00000000) ret=007e3a8f 002c:Ret KERNEL32.LoadLibraryExA() retval=022b0000 ret=007e3a8f ... 002c:Call KERNEL32.GetProcAddress(022b0000,00dd3ad0 "SetRegSecurity") ret=00ab1c4d 002c:Ret KERNEL32.GetProcAddress() retval=022b1600 ret=00ab1c4d ... 002c:Call advapi32.RegOpenKeyExA(80000002,00dd3b80 "Software\RICOH\PMG\Client",00000000,000f003f,00318b54) ret=022b166f 002c:Ret advapi32.RegOpenKeyExA() retval=00000000 ret=022b166f 002c:Call KERNEL32.lstrcpyA(003180f4,022b9050 "Everyone") ret=022b1462 002c:Ret KERNEL32.lstrcpyA() retval=003180f4 ret=022b1462 002c:Call advapi32.AllocateAndInitializeSid(00317684,00000001,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0031768c) ret=022b1801 002c:Ret advapi32.AllocateAndInitializeSid() retval=00000001 ret=022b1801 002c:Call advapi32.LookupAccountSidA(00000000,0127b7f8,003180f4,00317680,00317694,0031789c,00317690) ret=022b1861 002c:Ret advapi32.LookupAccountSidA() retval=00000001 ret=022b1861 002c:Call advapi32.CopySid(00000208,00317ee8,0127b7f8) ret=022b187e 002c:Ret advapi32.CopySid() retval=00000001 ret=022b187e 002c:Call advapi32.FreeSid(0127b7f8) ret=022b188b 002c:Ret advapi32.FreeSid() retval=00000000 ret=022b188b 002c:Call advapi32.RegGetKeySecurity(0000021c,00000004,003178c4,003178b8) ret=022b150e 002c:Ret advapi32.RegGetKeySecurity() retval=00000000 ret=022b150e 002c:Call advapi32.GetSecurityDescriptorDacl(003178c4,003178a4,00318b38,003178a0) ret=022b195a 002c:Ret advapi32.GetSecurityDescriptorDacl() retval=00000001 ret=022b195a 002c:Call advapi32.InitializeAcl(00318920,00000208,00000002) ret=022b1a5d 002c:Ret advapi32.InitializeAcl() retval=00000001 ret=022b1a5d 002c:Call KERNEL32.LoadLibraryA(022b90b0 "advapi32.dll") ret=022b1c98 002c:Ret KERNEL32.LoadLibraryA() retval=7eb00000 ret=022b1c98 002c:Call KERNEL32.GetProcAddress(7eb00000,022b90c0 "AddAccessAllowedAceEx") ret=022b1caa 002c:Ret KERNEL32.GetProcAddress() retval=7eb0ab88 ret=022b1caa 002c:Call advapi32.AddAccessAllowedAceEx(00318920,00000002,00000001,10000000,00317ee8) ret=022b1cc8 002c:Ret advapi32.AddAccessAllowedAceEx() retval=00000001 ret=022b1cc8 002c:Call KERNEL32.FreeLibrary(7eb00000) ret=022b1d0c 002c:Ret KERNEL32.FreeLibrary() retval=00000001 ret=022b1d0c 002c:Call advapi32.InitializeSecurityDescriptor(0031850c,00000001) ret=022b1995 002c:Ret advapi32.InitializeSecurityDescriptor() retval=00000001 ret=022b1995 002c:Call advapi32.SetSecurityDescriptorDacl(0031850c,00000001,00318920,00000000) ret=022b19b6 002c:Ret advapi32.SetSecurityDescriptorDacl() retval=00000001 ret=022b19b6 002c:Call KERNEL32.LoadLibraryA(022b9080 "advapi32.dll") ret=022b1c25 002c:Ret KERNEL32.LoadLibraryA() retval=7eb00000 ret=022b1c25 002c:Call KERNEL32.GetProcAddress(7eb00000,022b9090 "SetSecurityDescriptorControl") ret=022b1c37 002c:Ret KERNEL32.GetProcAddress() retval=7eb0cf28 ret=022b1c37 002c:Call advapi32.SetSecurityDescriptorControl(0031850c,00000400,00000400) ret=022b1c5a 002c:Ret advapi32.SetSecurityDescriptorControl() retval=00000001 ret=022b1c5a 002c:Call KERNEL32.FreeLibrary(7eb00000) ret=022b1c79 002c:Ret KERNEL32.FreeLibrary() retval=00000001 ret=022b1c79 002c:Call advapi32.RegSetKeySecurity(0000021c,00000004,0031850c) ret=022b15d5 002c:fixme:reg:RegSetKeySecurity :(0x21c,4,0x31850c): stub 002c:Ret advapi32.RegSetKeySecurity() retval=00000000 ret=022b15d5 ... 002c:Call advapi32.RegGetKeySecurity(0000021c,00000004,003178c4,003178b8) ret=022b150e 002c:Ret advapi32.RegGetKeySecurity() retval=00000000 ret=022b150e 002c:Call advapi32.GetSecurityDescriptorDacl(003178c4,003178a4,00318b38,003178a0) ret=022b195a 002c:Ret advapi32.GetSecurityDescriptorDacl() retval=00000001 ret=022b195a ... <endless looping> --- snip ---
RegGetKeySecurity -> GetSecurityDescriptorDacl -> DACL present? -> no -> loop again, trying to set registry security and reading DACL back.
Source: http://source.winehq.org/git/wine.git/blob/e4cb946c4aef0375a1f94a9167db0fe95...
--- snip --- 2396 LSTATUS WINAPI RegSetKeySecurity( HKEY hkey, SECURITY_INFORMATION SecurityInfo, 2397 PSECURITY_DESCRIPTOR pSecurityDesc ) 2398 { 2399 TRACE("(%p,%d,%p)\n",hkey,SecurityInfo,pSecurityDesc); 2400 2401 /* It seems to perform this check before the hkey check */ 2402 if ((SecurityInfo & OWNER_SECURITY_INFORMATION) || 2403 (SecurityInfo & GROUP_SECURITY_INFORMATION) || 2404 (SecurityInfo & DACL_SECURITY_INFORMATION) || 2405 (SecurityInfo & SACL_SECURITY_INFORMATION)) { 2406 /* Param OK */ 2407 } else 2408 return ERROR_INVALID_PARAMETER; 2409 2410 if (!pSecurityDesc) 2411 return ERROR_INVALID_PARAMETER; 2412 2413 FIXME(":(%p,%d,%p): stub\n",hkey,SecurityInfo,pSecurityDesc); 2414 2415 return ERROR_SUCCESS; 2416 } --- snip ---
Regards