Windows Service installer - windows-services

I created a Windows service and an installer for it. Now I want to run the windows service under account say na\test.\
I am specifieng it in Projectinstaller.
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.User;
this.serviceProcessInstaller1.Password = "pass123"
this.serviceProcessInstaller1.Username = "na\test";
I am installing the above in so many servers.
All the servers might not have the permissions to na\test.
If it doesn't have permissions the installation is getting stopped.
Is there anyway that I can catch that exception and if the user doesnt have permissions, restart the installation with local user account automatically.

If your installer is created using NSIS install packager you can test for appropriate permissions and act on that during the install process, more here:
http://nsis.sourceforge.net/Docs/Chapter4.html
( look for requestExecutionLevel )

Rather than hard coding the values of the user account, why not test to see if the user has permissions on that machine before trying to install. If they do install using na\test otherwise, install using a local account.

Related

How to install Jenkins on Windows 10 Home?

How do I install jenkins on Windows 10 Home?
I am going through this link to install jenkins on local system.
https://www.jenkins.io/doc/book/installing/windows/
anytime I try to login after installation, I get following error:
From the Jenkins website I get following solution:
Logon to the computer with administrative privileges.
Open the Administrative Tools and open the Local Security Policy
Expand Local Policy and click on User Rights Assignment
In the right pane, right-click Log on as a service and select properties.
Click on the Add User or Group… button to add the new user.
In the Select Users or Groups dialogue, find the user you wish to enter and click OK
Click OK in the Log on as a service Properties to save changes.
But this is not helpful as I am trying to do this on Win 10 Home hence local security policy is not available.
I tried to check system requirements also from https://www.jenkins.io/doc/administration/requirements/windows/ but could not get definitive answer.
Are there any workarounds or solution for this?
I ran into the same problem and could not find a solution. I ended up installing docker desktop on my Win10 Home and now run the precompiled image. Works perfectly.

WARNING! ejabberd can not start Admin user is not created Please check your configuration

My title is my "error" that I am facing in the Terminal when setup the ejabberd.
What I did.
Download package from this website and choose Mac OS X Intel Installer.
I'm following this tutorial.
Where I'm reach at /Applications/ejabberd-16.06/bin by Terminal.
And run ./postinstall.sh cesare jerry.local password
And got below error message in terminal.
WARNING ! ejabberd can not start Admin user is not created Please check your configuration
But I know there is instruction that 'postinstall.sh' script, which has to be run right after the installation to create the admin user.
So For create admin user I go on official site of ejabberd.
But there I can't understand 5th step and my registering process alway in progress .
In short how can I create admin user or how can I remove WARNING from the terminal?
COMMENT : After couples of the days, I found that instead of insall ejabberd with Operating System Specific Packagesr you should try to install ejabberd with Binary Installer.
You do not need to run postinstall.sh script as it is already run by the installer and create the admin user for you. If you have had no error message from the installer, you should already be set. You can just call ejabberd start script.
Please make sure that you also approve listening on ports if OSX firewall ask you to authorise it. Ensure also that the user installing ejabberd has admin rights.

Windows Service Install Ends in Rollback

When I try to install a Windows service:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil
I get, what looks to be, some success messages and some failure messages. Part way down:
An exception occurred during the Install phase.
System.ComponentModel.Win32Exception: The specified service has been marked for deletion
At the end:
The Rollback phase completed successfully.
The transacted install has completed.
The installation failed, and the rollback has been performed.
The service is given an entry in the Services applet, but it is marked as "Disabled". When I attempt to change it to another state, I get a "marked for deletion" error message.
There are no messages in the Event Log. There is nothing useful in the log file created by installutil.exe (I believe it's written to the current working directory).
I have no direction to go with this. What do I do?
It turns out that the install might, or probably will, fail if that service is highlighted in the Services applet. It's safest to just close the Services applet, install the service, and then re-open the Services applet. It's really stupid.
Also, make sure to run the console as admin.
I experienced the same and the issue for me was that a service with the same name was already installed. So in order to install the new service I had to uninstall the older services. I am learning how to create and setup windows services and thus the naming conflicting. Tried uninstalling the service first through:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil -u servicename.exe
Once this statement executes successfully, install your service and it should succeed without any rollbacks.
Right Click on Command Prompt and choose RUN AS ADMINISTRATOR
Then copy and paste in: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C:\TestService\bin\Debug\TestService.exe
Result in TestService.InstallLog is:
Installing service TestService...
Service TestService has been successfully installed.
Some times this happens due to permission issues.
Run the "Developer Command Prompt for VS 2012" as Administrator.
Then it will work.
Adding few more check's and points to solve this above issue.
Build service in release mode and take release folder files and kept in different path
Copy that path and go to visual studio command prompt window and run this bellow sample command to install the service.
Please close services.msc window if its opened , then run C:Program Files (x86)\Microsoft Visual Studio 11.0>InstallUtil.exe C:\RunLocationServices\TestService.exe
Go services.msc and select that service and click on start ,if it changed to "started" then your service running fine.
Still if issue exists then
Another Checkpoint & SOLUTION
When a service starts, the service communicates to the Service Control Manager how long the service must have to start (the time-out period for the service).
If the Service Control Manager does not receive a "service started" notice from the service within this time-out period,
the Service Control Manager terminates the process that hosts the service.
This time-out period is typically less than 30 seconds.
If you do not adjust this time-out period, the Service Control Manager ends the process.
To adjust this time-out period, follow these steps:
1.Go to Start > Run > and type regedit
2.Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
3.Name the new DWORD: ServicesPipeTimeout
4.Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type '180000', and then click OK
5.Restart the computer
Still if issue exists then problem in your service code ,infinate loop may occur due to your methods/classes of service calling. Do code review of each line.
This problem is due to security, you'd better open developer command prompt for VS 2012:
RUN AS ADMINISTRATOR
and install your service. It will surely fix your problem.
I tried and the issue was resolved.

Directory permission shared between Windows Service and console application

I'm not sure if this is proper place for such question (maybe should be placed on SuperUser?), but I'll try.
I have one C# console application and one Windows service. Both does the same, but console app was created before and is kept for backward compatibility. Each of these is running WCF service, whose methods operates on files in C:\ProgramData\MyApp. Console app is run as limited user (non-admin), Windows service runs as NT AUTHORITY\NETWORK SERVICE. When app creates some dirs/files, service cannot delete it and vice versa.
I would like to have it secured. My question is: should I grant full permissions on C:\ProgramData\MyApp to NETWORK SERVICE and current user? Or should I create dedicated user for running service/app?
Assuming your application does not set explicit security permission on newly created files, granting Network Service account Delete permissions on the folder would solve your immediate problem.
This command will do the work:
icacls c:\ProgramData\MyApp /t /grant "NETWORK SERVICE":(OI)(CI)(IO)D
Repeat the same for your other user service account.

How can I test if I have permissions to install a service and have it run as me on the domain?

I'd like to write a service (that starts up and runs whenever the machine is on) that queries Active directory since the user IIS uses does not have permission to query AD. How do I determine if A) my workstation where I have local admin rights, and B) a shared team workstation will allow me to do this?
Anything you can do as an interactive user can be done by a service with appropriate permissions and configuration, so it isn't so much an issue of determining if you can, but rather configuring the service so that it can.
Your installation package should request an appropriate set of credentials (and of course must be run by a user with privileges to install such a service). The service itself should simply catch and log any permission exceptions.
As an example - look at the SQL Server installation process. Early on it requests that you specify accounts with the required privileges.

Resources