2014-01-22 1 views
0

이 내가 성공적으로 가장을 만든 다음 단계 How to run wpf(c#) application by service account and integrated security이상한 오류가 다른 사용자에게 가장하는 동안

이후,하지만 난 정말 이상한 오류가 발생하고있다.

날 상황을 설명하자

  • 내 애플 WPF
  • 이다 나는 2 명의 사용자가 내 로컬 계정 (localUser) 및 서비스 계정 (소서).
  • 나는
  • 내가 localuser와 응용 프로그램을 열 내 프레임 개의 다른 모듈을 표시하고 내가 localUser 내 응용 프로그램을 실행하면 (그것을 확인 작동 소서

를 가장 Frame.Navigate() 함수를 사용하고 로컬 관리자 권한없이) saUser로 내 응용 프로그램을 실행할 때 saUser가 로컬 관리자인지 여부와 관계없이이 오류가 발생합니다. 가장 재미있는 것은 Navigate (...)가 2 번째로 호출 될 때 오류가 발생합니다. 시각! 정상 작동, 처음으로 ... :

Requested registry access is not allowed. 

stackTrace: 
    at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) 
    at System.Windows.Application.GetSystemSound(String soundName) 
    at System.Windows.Application.PlaySound(String soundName) 
    at System.Windows.Application.FireNavigating(NavigatingCancelEventArgs e, Boolean isInitialNavigation) 
    at System.Windows.Navigation.NavigationService.FireNavigating(Uri source, Object bp, Object navState, WebRequest request) 
    at System.Windows.Navigation.NavigationService.HandleNavigating(Uri source, Object content, Object navState, WebRequest newRequest, Boolean navigateOnSourceChanged) 
    at System.Windows.Navigation.NavigationService.Navigate(Uri source, Object navigationState, Boolean sandboxExternalContent, Boolean navigateOnSourceChanged) 
    at System.Windows.Navigation.NavigationService.Refresh() 
    at MyApp.MyNavigation.Navigate(Module modul, Boolean reverse) -> my function 

Guyz 도움, 어떤 제안? 내가 물었다 같은 몇 가지 코드를 추가하고, 그것의 단지 작은 평화 오류가 발생하는 경우 : 내가 나 한테 물어 충분히 명확 아니었다면 난

편집 ... ... 무슨 일이 일어나고 있는지 을 모르는 :

I have public static class for navigation 
MainWindow mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow; 
current <- currentlly selected module 
mainFrame <- frame that is showing all pages 

// if current module if already selected refresh frame content 
if (current.Link == mainWin.mainFrame.NavigationService.CurrentSource.ToString()) mainWin.mainFrame.Refresh(); 
// else show page content in frame 
else mainWin.mainFrame.NavigationService.Navigate(new Uri(current.acLink, UriKind.Relative)); 

Refresh() 및 Navigate()에서 오류가 발생합니다.

+0

몇 가지 코드를 게시 할 수 있습니까? 그 오류는 일반적으로 Windows 레지스트리에서 작업 할 때 발생합니다 ... – Gonzix

+2

GUI를 실행하기 위해 시스템 사용자로 가장하는 이유는 무엇입니까? 계정에 레지스트리를 읽을 수있는 기본 권한이없는 것처럼 보입니다. 백그라운드 작업, 시스템 서비스 등을 위해 시스템 계정을 사용해야하며, 정말로 필요한 경우에만 사용해야합니다. – Grzenio

+0

예 오류는 레지스트리에 액세스 할 때 오류가 있음을 나타내지 만 두 계정 모두 로컬 관리자이므로 레지스트리에 대한 전체 액세스 권한을 갖기 때문에 내 로컬 사용자는 로컬 관리자가 아닌 경우에도 올바르게 작동합니다. – lanicor

답변

0

나는 동일한 문제에 직면하고있다. 이것에 대한 해결책이 있습니까? an article related to how to access HKCU reg key이 있지만 코드가 Microsoft 소유이므로 WPF에 적용 할 수없는 & 코드가 적용됩니다.

[편집] 내 관찰 WPF 사용자 정의 컨트롤/윈도우가 초기화되는 경우 이전 나중에 그들이 어떻게 생성 되는가를 여러 번에 대해 아무런 문제가없는 가장 후 다음 가장하는 것입니다; 오류가 발생하지 않습니다. 해결 방법으로이 작업을 수행 할 수 있습니까?

+0

해결 방법으로 사용할 수 있다고 생각합니다. –

관련 문제