United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6725355 : Auto update is fully broken on VISTA Admin user with UAC on

Details
Type:
Bug
Submit Date:
2008-07-14
Status:
Closed
Updated Date:
2010-09-17
Project Name:
JDK
Resolved Date:
2008-08-18
Component:
install
OS:
windows_vista,generic
Sub-Component:
install
CPU:
x86,generic
Priority:
P1
Resolution:
Fixed
Affected Versions:
6u10
Fixed Versions:
6u10 (b29)

Related Reports
Backport:
Duplicate:

Sub Tasks

Description
Vista Ultimate user will not be offered upgrade able to uprgade to newer version with UAC enabled permission.

 How to reproduce - Make usre the machine is Vista Ultimate and UAC enabled.

1.) Install 6u10 RC build of JRE
2.) Open JCP and go to update tab. Check the update schedule

Issue no# 1  -> It should not be daily

3.) Go to regitry and check Update->plociy under JavaSoft key

Issue no# 2 -> If schedule is daily then "Frequency" should be set to "127" or "7f"

4.) Set the "UpdateServletURL" to http://sqindia.india.sun.com/disk17/deployment/pg152891/PIPTest/map.xml

5.) Adjust the system time based on the Update schedule set for example if Update schedule is Daily at 10:00 PM then set the system clock to 09:50 PM
Try to change the Update schedule settings (From Daily to weekly or monthly)
Go to regitry and check Update->plociy under JavaSoft key
Issue no# 3 -> If schedule is changed then "Frequency" should be also be changed
Issue No# 4 -> ScheduleID should be removed from the registry after schedule is modified from Java control pnael. 

6.) Launch "Jusched.exe" wait till time is passed as mentioned in update schedule.

Actual Behaviour
Nothing happen

This issue will block the UAC enabled user from upgrade notification as well as from upgrade to future releases.

Manual update works fine.

                                    

Comments
EVALUATION

On Home basic, AU only works with built in Admin. With "User as Administrator" AU fails on Home basic as well.
                                     
2008-07-17
SUGGESTED FIX

If a user that cannot write/delete startup delay value is running scheduler, then the startup delay value is no longer needed, and so the scheduler should not exit if write/delete permission to the Policy key is denied.  The fix would open the Policy key with read-only access.  Then, if the startup delay value exists, another key handle will be created to open the Policy key with write/delete access.  If the Policy key is successfully opened with write/delete, the normal startup delay logic will proceed (decrement value, delete value if == 0, etc).  If the Policy key cannot be opened with all access, then we log the denial to jusched.log, and proceed with normal auto-update (ignoring the startup delay value). 
Since this will leave the ignored startup delay value behind, an addition may also be made to the update checker executable to look for the value, and delete it if it exists.  If uninstall & upgrade clean up the delay value, we may be able to leave it for 6u10.

The suggested fix does not make any large changes to the program logic:  It makes the request to open the Policy key read-only access, and creates a new request for all-access only when it is needed (ie: startup delay value exists).  Also, instead of exiting the scheduler when access is denied, it logs the denial and continues.  This assumes that it's better to have a premature update notification (possibly during the first end-user login after OEM installation) than it is to never auto-update.
                                     
2008-07-16
EVALUATION

I have checked with VISTA home basic UAC ON and OFF and AU works fine. I guess the issue is only seen with VISTA ultimate and business and not with home basic.
                                     
2008-07-16
EVALUATION

This problem exists due to a change in 6u10 b21 that was made to create a startup delay counter for OEMs (see CR#6563052).
Currently, jusched.exe runs without privilege but requires "All Access" permission to the JavaSoft/Java Update/Policy key in case it needs to write or delete the startup delay value.
Vista admin users with UAC enabled and standard Vista users can't get "All access" to JavaSoft/Java Update/Policy key. 
On Vista, jusched running under all users can read Java Update keys (XP non-admin users couldn't). 
jusched and javacpl, running under Standard Vista users and admin users with UAC enabled, write to a virtualized Java Update key.

When the request to access the Policy key with "All access" is denied, jusched exits.  This happens after the request for "All access" to the Policy key happens whether the startup delay value exists or not.
                                     
2008-07-16
EVALUATION

After every installation Update schedule should be uniqe settings. And after first installation it should be set monthely. Please check CR 6563052 for the Randomized Java Update setting.

I also got this output from log file

Tue Jul 15 09:57:09 2008
:: Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys.

Tue Jul 15 09:56:14 2008
:: Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys.

It seems some issue while opening and creating the update specific registry keys. Jusched is gertting killed after five minutes. There is deply of 5 minutes after "Jusched" is stared. Since "Jusched" fails to becz of exceptions or error it is getting killed. To me, it seems issue while handlling registry key.
                                     
2008-07-15
EVALUATION

Jusched doesn't run with privilege and hasn't.  I don't understand why UAC matters for the CR.

It looks like this problem goes back to 6563052 and rev 1.29.1.5 08/02/20 of UpdateScheduler.cpp and the changes for REG_JUPDATE_STARTUP_DELAY.

The call to OpenJavaUpdateKey() was changed to bWrite==TRUE and it tries to create HKLM\SOFTWARE\JavaSoft\Java Update\Policy with KEY_ALL_ACCESS.
jusched.exe can't do that on Vista and OpenJavaUpdateKey() fails.
More than KEY_READ access is needed for RegDeleteValue(hKey, REG_JUPDATE_STARTUP_DELAY)

Secondary to this is investigating the user changing the update frequency.  I assume that works on Vista in previous releases.
                                     
2008-07-15
EVALUATION

I tested on New-mexico (Vista Ultimate w/ UAC enabled) using the "Sun" administrator account.

I installed http://jre.sfbay.sun.com/java/re/jdk/6u10/promoted/rc/b27/bundles/windows-i586/jre-6u10-rc-bin-b27-windows-i586-p-08_jul_2008-s.exe

In Java Control Panel, the update schedule was weekly - every Sunday at 4:00pm

I changed the date/time to Sunday 3:50pm and ran jusched.exe.  I did not get notified of a Java Update.  

Twice now, jusched was running as the current user "Sun" in Task Manager, but after the update time, jusched.exe was not running anymore.  I don't know why.

After I changed the update frequency to daily in Java Control Panel, 
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy]
"Frequency"=dword:010c0000
was not changed, but I found these two virtualized registry keys that have a daily frequency.

[HKEY_CLASSES_ROOT\VirtualStore\MACHINE\SOFTWARE\JavaSoft\Java Update\Policy]
"NotifyDownload"=dword:00000000
"NotifyInstall"=dword:00000001
"Frequency"=dword:0000007f
"UpdateSchedule"=dword:0000000c
"VisitorId"="83ee6481-1f5edf40"

[HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\JavaSoft\Java Update\Policy]
"NotifyDownload"=dword:00000000
"NotifyInstall"=dword:00000001
"Frequency"=dword:0000007f
"UpdateSchedule"=dword:0000000c
"VisitorId"="83ee6481-1f5edf40"
                                     
2008-07-14
EVALUATION

I found the following in %TEMP%\jusched.log:

Mon Jul 14 10:50:50 2008
:: Received shutdown signal

Mon Jul 14 11:15:59 2008
:: InstallStatus:ret=200 visid=f27d2487-b6daedf8 method=joff-s state=ic ver=XX,1.6.0_10-rc-b27 ICstatus=;jre|0,;s4|-130;;;event7=1,;s5|-130;;;event7=1,;s3|-129;;;event7=1
<?xml version="1.0" encoding="UTF-8"?>
<status>SUCCESS</status>

Mon Jul 14 11:15:59 2008
:: <?xml version="1.0" encoding="UTF-8"?> <request> <sc_xml_ver>1.0</sc_xml_ver><reportsuiteid>suninstallstatdev</reportsuiteid><visitorid>f27d2487-b6daedf8</visitorid><prop21>f27d2487-b6daedf8</prop21><prop20>XXXXXX</prop20><pagename>ic</pagename><evar2>1.6.0_10-rc-b27</evar2><evar3>XX</evar3><evar4>i586</evar4><evar5>i586</evar5><evar6>winvista</evar6><evar7>joff-s</evar7><evar8>US</evar8><events>event6,event7</events><products>;jre|0,;s4|-130;;;event7=1,;s5|-130;;;event7=1,;s3|-129;;;event7=1</products></request>

Sun Jul 20 15:57:04 2008
:: Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys.

Sun Jul 20 16:33:02 2008
:: Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys.

Sun Jul 27 15:59:45 2008
:: Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys.

"Either not a Win2000, XP platform or Non-admin user or GetModuleFilename failed or Error Opening JavaUpdate Keys." is from deploy\src\plugin\win32\jupdate\scheduler\UpdateScheduler.cpp
                                     
2008-07-14



Hardware and Software, Engineered to Work Together