[Win32utils-devel] win32-service of win32utils

Daniel Berger djberg96 at gmail.com
Thu Sep 20 20:35:10 EDT 2007


Ah, excellent. Glad you got it figured out!

Regards,

Dan

Yuhong Liu wrote:
> Hi Dan,
> 
> I think I have figured out the problem. The issue is because of the 
> setting of service type. So by default the service type is set as 
> Service::WIN32_OWN_PROCESS | Service::INTERACTIVE_PROCESS. This means 
> the service is configured to interact with the desktop, you cannot 
> change the service to run under a domain user account. So I changed the 
> code of configuring service by setting service type as WIN32_OWN_PROCESS.
> 
> s.configure_service{ |s|
> s.start_name = "name of the account" 
> s.password = "password"
> s.service_type = Service::WIN32_OWN_PROCESS
> }
> 
> Then it works now.
> 
> Thank you very much for the help.
> 
> Kay
> 
>  > Date: Wed, 19 Sep 2007 20:33:30 -0600
>  > From: djberg96 at gmail.com
>  > To: serphakay at hotmail.com
>  > Subject: Re: win32-service of win32utils
>  >
>  > Hi Kay,
>  >
>  > Just to be clear, you tried "domain_name\\user_name" and it didn't work?
>  >
>  > Regards,
>  >
>  > Dan
>  >
>  > Kay wrote:
>  > > I'm writing some scripts to programmatically change the user 
> account of running a windows service. So I downloaded one of the windows 
> utilities, win32-service, and wrote my scripts. However when I was 
> trying to use the following scripts to change the name of the account of 
> running a windows service
>  > >
>  > >
>  > >
>  > > s.configure_service{ |s|
>  > >
>  > > s.start_name = "name of the account"
>  > >
>  > > s.password = "password" # Note that I used plain text password
>  > >
>  > > }
>  > >
>  > >
>  > >
>  > > I was always given some kinds of error messages, which varied based 
> on different formats of the account name being used. So
>  > >
>  > >
>  > >
>  > > with start_name = "domain_name\user_name" (using \ for escaping and 
> have tried domain_name with either upper case or lower case), the 
> message is "the parameter is incorrect".
>  > >
>  > >
>  > >
>  > > with start_name = "domain_name\user_name" (have tried domain_name 
> with either upper case or lower case), the message is "the account name 
> is invalid or does not exist, or the password is invalid for the account 
> name specified".
>  > >
>  > >
>  > >
>  > > with start_name = "user_name at domain_name.com", the message is " the 
> parameter is incorrect".
>  > >
>  > >
>  > >
>  > > with start_name = "user_name at another_domain_name.com", 
> (another_domain_name is a possible domain name for me), the message is 
> "the specified domain either does not exist or could not be contacted".
>  > >
>  > >
>  > >
>  > > with start_name = "user_name", the message is "the account name is 
> invalid or does not exist, or the password is invalid for the account 
> name specified".
>  > >
>  > >
>  > >
>  > > So I'm writing to ask for your suggestions. BTW, do you think it's 
> right to use password in plain text? Your help is very appreciated. The 
> following is a full script I was using.
>  > >
>  > >
>  > >
>  > > base = File.basename(Dir.pwd)
>  > >
>  > > if base == "examples" || base =~ /win32-service/
>  > >
>  > > require "ftools"
>  > >
>  > > Dir.chdir("..") if base == "examples"
>  > >
>  > > Dir.mkdir("win32") unless File.exists?("win32")
>  > >
>  > > File.copy("service.so","win32")
>  > >
>  > > $LOAD_PATH.unshift Dir.pwd
>  > >
>  > > end
>  > >
>  > >
>  > >
>  > > require "win32/service"
>  > >
>  > > include Win32
>  > >
>  > >
>  > >
>  > > s = Service.new("machine_name")
>  > >
>  > >
>  > >
>  > > # Create a new service
>  > >
>  > >
>  > >
>  > > if Service.exists?("foo")
>  > >
>  > > Service.delete("foo")
>  > >
>  > > end
>  > >
>  > >
>  > >
>  > > s.create_service{ |s|
>  > >
>  > > s.service_name = "foo"
>  > >
>  > > s.binary_path_name = 
> "C:\Autonomy\DocumentumFetchOld\DocumentumFetchOld.exe"
>  > >
>  > > s.display_name = "My Foo Service"
>  > >
>  > > }
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > # Configure a service that already exists
>  > >
>  > > s.configure_service{ |s|
>  > >
>  > > s.start_name = "start_name"
>  > >
>  > > s.password = "password"
>  > >
>  > > }
>  > >
>  > >
>  > >
>  > > s.close
>  > >
>  > >
>  > >
>  > > Service.start("foo")
>  > >
>  > > Service.pause("foo")
>  > >
>  > > Service.resume("foo")
>  > >
>  > > Service.stop("foo")
>  > >
>  > >
>  > >
>  > > Service.delete("foo")
>  > >
>  > >
>  > >
>  > > Service.getdisplayname("Schedule") # "Task Scheduler"
>  > >
>  > > Service.getservicename("ClipBook") # "ClipSrv"
>  > >
>  > >
>  > >
>  > > s = Service.status("ClipSrv")
>  > >
>  > >
>  > >
>  > > # Enumerate over all services, inspecting each struct
>  > >
>  > > Service.services{ |s|
>  > >
>  > > p s
>  > >
>  > > puts
>  > >
>  > > }
>  > >
>  > >
>  > >
>  > > Thanks!
>  > >
>  >
> 
> ------------------------------------------------------------------------
> Invite your mail contacts to join your friends list with Windows Live 
> Spaces. It's easy! Try it! 
> <http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us>



More information about the win32utils-devel mailing list