2013-02-04 1 views
1

WPF 응용 프로그램에서 일부 보고서를 생성했습니다. WindowService에서이 응용 프로그램을 시작해야하며 현재 LocalSystem으로 실행중인 서비스에서 실행 중입니다. Pie 3D를 제외하고 모든 렌더링이 올바르게 수행되고 Viewport3D 객체에 표시됩니다. 이 동작을 보여주는 코드 추출입니다 :Windows 서비스의 Viewport3d 렌더링

static class VisualSaver 
    { 
     public static void Save(Visual v, int width, int height, string file,Brush background) 
     { 
      RenderTargetBitmap bmp = new RenderTargetBitmap(
         width, height, 96, 96, PixelFormats.Pbgra32); 

      Rectangle vRect = new Rectangle(); 
      vRect.Width = width; 
      vRect.Height = height; 
      vRect.Fill = background; 
      vRect.Arrange(new Rect(0, 0, vRect.Width, vRect.Height)); 

      bmp.Render(vRect); 
      bmp.Render(v); 

      PngBitmapEncoder png = new PngBitmapEncoder(); 
      png.Frames.Add(BitmapFrame.Create(bmp)); 

      using (Stream stm = File.Create(file)) 
      { 
       png.Save(stm); 
      } 
     } 
    } 

그리고 이것은 호출 코드 :

VisualSaver.Save(viewport,310,340,PathExtension.GetTempFileWithExtension("png"),Brushes.White); 

그리고 네 뷰포트가 제대로 측정/정렬합니다.

3D 개체의 비대화 형 응용 프로그램에서 렌더링 할 때 몇 가지 제한이 있습니까? Windows7 - 2008 server env에 있습니다. ? 해결 방법이 있습니까? 불행하게도 정책으로 인해

답변

0

사항 : Windows XP®에서

, 윈도우 Server® 2003 및 Windows® 운영 체제의 이전 버전에 로그온하는 첫 번째 사용자와 동일한 세션에서 실행되는 모든 서비스 콘솔. 이 세션을 세션 0이라고합니다. 세션 0에서 서비스 및 사용자 응용 프로그램을 함께 실행하면 서비스가 높은 권한으로 실행되므로 악의적 인 에이전트가 자신의 권한 수준을 높이는 방법을 찾고 있기 때문에 보안 위험이 있습니다.


윈도우 Vista® 및 Windows Server® 2008 운영 체제는 서비스를 세션 0에 고립시키고, 세션 0이 아닌 상호 작용하여이 보안 위험을 완화. Windows Vista 및 Windows Server 2008에서는 시스템 프로세스 및 서비스 만 세션 0에서 실행됩니다. 첫 번째 사용자는 세션 1에 로그온하고 후속 사용자는 후속 세션에 로그온합니다. 이 방법은 서비스가 사용자의 응용 프로그램과 동일한 세션에서 실행되지 않으므로 응용 프로그램 코드에서 비롯된 공격으로부터 서비스를 보호합니다.

Windows 7 2008에서는 비디오 드라이버와 관련된 모든 렌더링이 실패합니다. 유일한 해결책은 앱에 서비스를 공개하고 데스크톱에서 실행하도록하는 것입니다.