https://issues.apache.org/bugzilla/show_bug.cgi?id=56143

            Bug ID: 56143
           Summary: Allow "service.bat install" to be used in an non-UAC
                    cmd.exe session
           Product: Tomcat 7
           Version: 7.0.50
          Hardware: PC
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Integration
          Assignee: dev@tomcat.apache.org
          Reporter: knst.koli...@gmail.com

If you use a Microsoft Windows OS that has UAC and use service.bat script to
install Tomcat as a service, you have to first launch command console (cmd.exe)
in elevated privileges mode ("Run as administrator") and then call "service.bat
install" from there.

This requirement is mentioned in Tomcat documentation:
http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html#Installing_services

[quote]
NOTE: On Windows Vista or any other operating system with User Account Control
(UAC) you must either disable UAC or right-click on cmd.exe and select "Run as
administrator" in order to run this script. If UAC is enabled being logged on
with an Administrator account is not sufficient. 
[/quote]



If you forget to launch cmd.exe in that mode and just run "service.bat
install",  with the current Tomcat versions (6.0.39, 7.0.50, 8.0.3) you will be
prompted 3 times by UAC [3], but the service will be installed incorrectly.

With r1565781 / r1567742 (7.0.52) this was improved and you will be prompted by
UAC only once, but still the service will be installed incorrectly.


The cause for this behaviour is that install command in service.bat script uses
environment variables (such as PR_CLASSPATH) to pass parameters to service
installer (prunsrv).[1] Apparently, when a child application is launched with
elevated privileges it does not inherit environment variables from its parent.
[2]

The consequence is that a number of crucial settings in the installed service
will be blank. For example, its classpath and its log path will be blank.

As a result, an attempt to launch such service will fail shortly and silently,
as Tomcat bootstrap classes are not found and logging is not configured either.

(There will be some logs in %SystemRoot%\system32\LogFiles\Apache  though).


A workaround is to fix such configuration by using service configuration
application (tomcat7w.exe) to configure missing options.


I hope that this can be solved by changing service.bat so that all necessary
options are passed as command-line arguments instead of variables.

For reference:
[1] Apache Commons Daemon documentation
http://commons.apache.org/proper/commons-daemon/procrun.html

[2] "Re: r1567742" thread on dev mailing list
http://tomcat.markmail.org/thread/tjmwxc5vb5ut4zuq

[3] Bug 56079
https://issues.apache.org/bugzilla/show_bug.cgi?id=56079#c6

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to