mic*_*lle 68 c# windows windows-services event-log
我正在尝试创建一个Windows服务,但是当我尝试安装它时,它会回滚给我这个错误:
System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性.
我不知道这意味着什么 - 我的应用程序有最低限度,因为我只是先测试一下.
我的安装员代码:
namespace WindowsService1
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
//set the privileges
processInstaller.Account = ServiceAccount.LocalSystem;
processInstaller.Username = null;
processInstaller.Password = null;
serviceInstaller.DisplayName = "My Service";
serviceInstaller.StartType = ServiceStartMode.Manual;
//must be the same as what was set in Program's constructor
serviceInstaller.ServiceName = "My Service";
this.Installers.Add(processInstaller);
this.Installers.Add(serviceInstaller);
}
private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
}
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务代码:
public partial class Service1 : ServiceBase
{
public Service1()
{
this.ServiceName = "My Service";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
}
protected override void OnStop()
{
base.OnStop();
}
}
Run Code Online (Sandbox Code Playgroud)
Whi*_*ght 177
在Windows 7中使用installutil时,尝试从命令行安装服务时遇到了同样的异常.解决方案是以管理员身份打开命令行,然后运行installutil.
此外,您可能会发现使用TopShelf等框架来托管服务更容易,因为它管理从服务的名称和描述到恢复过程的工作方式的所有设置配置.它还允许您在调试时从IDE内部轻松启动服务.
您可能正在尝试使用安装服务
具体来说,在这种情况下的问题是在服务安装期间创建一些EventLog注册表项.
解决此问题的一种方法是确保以管理员模式运行命令提示符.(右键单击>以管理员身份运行)
我还遇到过一些情况,由于某些注册表项没有管理员帐户的"完全控制"权限,此方法仍然无法解决SecurityException问题.
以下密钥应为管理员设置"完全控制",以便服务能够写入EventLog:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
这可以通过以下方式完成:
如果系统提示您输入用户名和密码,则某处设置为Account = ServiceAccount.User
- 这是可能(应该)发生的唯一方法。也许你上面注释中的代码没有被执行,或者它被稍后执行的代码改回来。
就您的第二段而言,总的来说,如果您不希望它在控制台上显示或作为任务运行,我认为服务可以解决这个问题。我不确定我是否理解将它作为 ASP.NET 运行并且不允许您查看数据库的部分...
最后,在您的最后一段中,我无法在不了解安装程序代码中发生的事情的情况下与 NullExeception 交谈。