次の方法で App.Config ファイルからいくつかの文字列をフェッチする必要がある Windows サービスをインストールしましたOnStart
- ConfigurationManager.AppSettings["stringName"];
App.Config 内にはsource
、ログ ファイルに書き込むために使用するログ ファイルも定義されています。
ただし、サービスを正常にインストールしてSerivce Control Explorer
内部から開始しようとするとMy Computer -> Manage - > Device Manager
、次のメッセージが表示されます
The service on the local computer and then stopped. Some services stop automatically if not used by toher applications
Windows イベント ビューアー内で、次のエラーの詳細が表示されます (サービスの開始中に例外がスローされた可能性があります)。
同じエラーの詳細は次のとおりです。
Service cannot be started. System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section add. (C:\Program Files (x86)\Default Company Name\ServiceSetup\ServiceChecker.exe.Config line 3)
at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
--- End of inner exception stack trace ---
at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.Dia...
.exe.config
上記の詳細は、サービスのファイルに関連するエラーの詳細を示しています。サービスのアンインストールと再インストールを試みましたが、サービスのインストール アカウントは、Local system
幅広いシステム特権を持つものとして設定されています。
プロジェクトの私の App.Config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="UtilName" value="sample.exe"/>
<add key="App1" value="MyApp"/>
<add key="App1E" value="MyApp.exe"/>
<add key="App2" value="MyApp2"/>
<add key="App2E" value="MyApp2.exe" />
<add key="AppDirectory" value="Company\MyProject" />
<add key="CMDArgs" value="\start"/>
</appSettings>
<system.diagnostics>
<sources>
<source name="ServiceTrace" switchName="ServiceTraceSwitch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="ServiceLog" type="System.Diagnostics.TextWriterTraceListener" initializeData="servicetrace.log"/>
</listeners>
</source>
</sources>
<switches>
<add name="ServiceTraceSwitch" value="Information" />
</switches>
<trace autoflush="true" indentsize="4"></trace>
</system.diagnostics>
</configuration>