2012-08-28 2 views
3

내 Windows 서비스 에 파일을 생성 할 수 있으며,이 경로에 ONSTART 방법 액세스에서 액세스는 Windows 서비스

오류 오류

입니다 'C로 파일을 만들 때 거부되었습니다 .txt '가 거부되었습니다.

protected override void OnStart(string[] args) 
     { 


      try 
      { 
       Logger.InitLogFile("BridgeServiceLog.txt"); 
       Trace.WriteLine(Logger.logSwitch.TraceInfo, "Trace Started"); 
       Trace.WriteLineIf(Logger.logSwitch.TraceInfo, "OnStart Started"); 

       _bridgeServiceEventLog.WriteEntry("new OnStart"); 
       if (Vytru.Platform.Bridge.Configuration.LicenseValidetor.ValidCountAndTypeDevices()) 
       { 
         SharedData.InitializeBridge(); 
         // WsInitializeBridge(); 
       } 
       else 
       { 

         this.Stop(); 
         _bridgeServiceEventLog.WriteEntry("LicenseValidetor Error"); 
       } 
       _bridgeServiceEventLog.WriteEntry("end Start"); 
      } 
      catch (Exception e) 
      { 
       Trace.WriteLineIf(Logger.logSwitch.TraceError, e.Message); 
       _bridgeServiceEventLog.WriteEntry("error In onstart method " + e.Message); 
      } 
      Trace.WriteLineIf(Logger.logSwitch.TraceInfo, "OnStart Ended"); 

     } 

답변

5

서비스 사용자 계정은 아마 (Windows 서비스의 작업 디렉토리입니다) C:\Windows\System32에 대한 쓰기 액세스 권한이 없습니다.

어쨌든, 당신은 그 폴더에 쓰지 말아야합니다. 서비스가 아닌 운영 체제 용입니다.

Environment.GetFolderPath을 사용하면 로그 파일과 같은 파일을 작성하는 데 적합한 경로를 통해 자신의 컴퓨터뿐 아니라 모든 컴퓨터에서 작동 할 수 있습니다. 다음은 그 예입니다.

var companyPath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), 
    "MyCompany" 
); 
var productPath = Path.Combine(companyPath, "MyProduct"); 
var logFilePath = Path.Combine(productPath, "BridgeServiceLog.txt"); 

당신은 물론 MyCompanyMyProduct에 적합한 값을 사용해야합니다.

5

Windows 서비스를 실행하는 경우 기본 작업 폴더는 <System drive>:\Windows\System32\입니다.
다행히도 모든 사람이 그 폴더에 액세스 할 수있는 것은 아닙니다.

두 가지 방법이 있습니다. 권한이있는 다른 폴더에 파일을 쓰거나 관리자 권한으로 서비스를 실행하십시오.

첫 번째 옵션을 권하고 싶습니다.

+0

관리자 권한으로 내 서비스를 어떻게 실행할 수 있습니까? – tito11

+0

'services.msc' (Windows 키 + R)로 가서 서비스를 찾은 다음 마우스 오른쪽 버튼을 클릭하여 로그온 탭으로 이동하여 관리자 계정을 구성하십시오. –

0

가장 쉬운 해결책은 파일을 저장하고 마우스 오른쪽 단추를 클릭하고 속성, 보안을 유지하고 IIS_Users라는 새 사용자를 추가하고 쓰기 권한을 부여 할 폴더로 이동하는 것입니다.