On Tuesday 17 May 2005 11:37, Russell Howe wrote:
> Kern Sibbald wrote:
> > On Monday 16 May 2005 11:25, Russell Howe wrote:
> >>/servicehelper, which looks to mean "Display pretty system tray icon".
> >
> > No, see below.
>
> OK, I had misconceptions about the /servicehelper switch.
>
> > /servicehelper is an old artifact that should not be used, unless you
> > want to have all kinds of problems -- see below.
>
> OK. I notice that the current code in src/filed/win32/winmain.cpp
> doesn't even check for it as a commandline option.
>
> > The bacula-fd runs both the daemon and the systray icon.  They are just
> > two different threads of the same program.
>
> Ah, this I didn't realise - it explains some of my confusion :)
>
> >>>>HKLM\Software\Microsoft\Windows\CurrentVersion\Run has this:
> >>>>
> >>>>Name: Bacula
> >>>>Value: "c:\bacula\bin\bacula-fd.exe" /servicehelper
> >
> > If that is how you are starting Bacula, then you are starting it
> > incorrectly.
>
> This was not set up by me - looking at the source, it is set up by the
> InstallService() member function of bacService. Take a look around line
> 528 of src/bacula/filed/win32/winservice.cpp:
>
> // Now install the servicehelper registry setting...
> // Locate the RunService registry entry
> HKEY runapps;
> if (RegCreateKey(HKEY_LOCAL_MACHINE,
>       "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
>       &runapps) != ERROR_SUCCESS) {
>
> It then looks like bacula-fd.exe goes on to add itself to this startup key.
>
> So, when bacula-fd is run with the /install switch, it creates this
> HKLM\Software\Windows\CurrentVersion\Run key, as well as doing things
> like registering itself with the service manager (at least on NT and
> above).
>
> I don't know if removing this key on Win9x/ME will have any adverse
> effects, although the code seems to add an entry under RunServices on
> those OSes, so I suspect the key under Run is just noise. 

Yes, a sort of pollution of the already polluted registry.

> Since the code 
> doesn't even seem to check for the option, I don't see that it can be
> doing anything...

This is what I believe. When I first wrote the code, I didn't understand the 
need for this key, but I was tired of tweaking things so just left it ...

>
> > This is probably just some other key that the original code setup that is
> > not used by Bacula.  Bacula should always be started as /service.  I have
> > no idea what the service helper code does. It is old original code that
> > is not functional as best I know, and I just didn't bother to rip it out.
>
> Well, I have removed this startup key on one of our servers, so there is
> no longer any copy of bacula running with the /servicehelper switch.
> I'll let you know if it causes any weirdness. 

> Removing the key certainly 
> stops the warning messages being logged when users log in via terminal
> services.

Well, this is a big surprise.  If this is all that it takes to correct the 
problem, first it is easy enough to publish, and second, I'll be very happy 
to remove the old code.

>
> >>>>strncmp("/servicehelper", "/service", 8) and is only matching on the
> >>>> 1st 8 characters of "/servicehelper".
> >>>>
> >>>>"/service" is then seen as equal to "/servicehelper"
> >>>>
> >>>>Should it not be strcmp(&szCmdLine[i], BaculaRunService)? Is
> >>>>szCmdLine[i] trusted?
> >>
> >>Trusted to be null terminated, rather (otherwise it may be a potential
> >>vulnerability?).
> >
> > I could be wrong, but I think you are going in a completely wrong
> > direction. As I previously stated, most likely it has something to do
> > with interacting with the user.  If it is not that then it is some new
> > requirement that Microsoft has added in the past few years to interact
> > with the Service Manager that Bacula does not understand.
>
> Well, from where I'm sitting it looks like a couple of things:
>
> * The registry key is (presumably?) superfluous and should not be
> created when the FD is installed as a service in Windows. This will also
> be one less thing to run at bootup, which I'm sure is welcome :)

Yes, I agree as long as removing it doesn't break something.

>
> * The commandline option parsing sees the following two options as
> identical:
>
>       foo
>       foobar
>
> (but will also pick up the 'foobar' option if it checks for it). This
> isn't a problem, as long as command line options are picked such that
> none follow the above pattern.

This was on purpose to allow shorter versions of the command line options. 
Probably it was a bad idea.

>
> Had the latter not been the case, I suspect bacula-fd.exe would simply
> have terminated as soon as it had been called with /servicehelper, with
> an error to the effect that it didn't know what '/servicehelper' meant.
> Instead, it took it to mean /service and tried to register itself with
> the service helper (which MS says an application started from the
> console cannot do).

Could you explain to me why and when Bacula would be called from that 
ServiceHelper key?  Also, what is a Service helper?  I don't *really need to 
know these things, but it might help me feeling a bit more at ease about 
removing it ...

-- 
Best regards,

Kern

  (">
  /\
  V_V


-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to