冒充其他用户时出现奇怪的错误

时间:2014-01-22 08:02:35

标签: c# .net wpf impersonation

这是下一步 How to run wpf(c#) application by service account and integrated security

我成功创建了模仿,但我收到了一些非常奇怪的错误。

让我解释一下情况:

  • 我的应用是WPF
  • 我有2个用户,我的本地帐户( localUser )和服务帐户( saUser )。
  • 我正在使用Frame.Navigate()函数在我的框架中显示不同的模块
  • 我使用localuser打开应用,然后模拟 saUser

当我使用localUser运行我的应用程序时,它工作正常(具有本地管理员权限,没有) 当我使用saUser运行我的应用程序时,我收到此错误,如果saUser是本地管理员,则没有麻烦,最有趣的是我第二次调用Navigate(...)时出错! ,第一次正常工作......:)

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()上发生错误。

1 个答案:

答案 0 :(得分:0)

我面临同样的问题。这有什么解决方案吗? 有an article related to how to access HKCU reg key,但它适用于我们拥有的代码&amp;不适用于WPF,因为其代码归Microsoft所有。

<强> [编辑] 我的观察是,如果WPF用户控件/ Window在模仿之前被初始化,那么在模仿之后,没有关于它们被创建多少次的问题;没有错误被抛出。这可以作为一种解决方法吗?。