IOException при олицетворении пользователя

Я получаю очень странную ошибку, когда я выдаю себя за пользователя в моем приложении WPF.

Мое приложение - это TabControl в окне с двумя вкладками. На одной вкладке, которая отображается при запуске, у меня есть график. На другой вкладке у меня есть несколько элементов управления, используемых для настройки графика. В частности, у меня есть два элемента управления ListView (или их производные). В MenuBar у меня есть MenuItem, который пользователь использует для входа в систему как другой пользователь, и я использую WindowsImpersonation для этого.

Вот в чем проблема: если я запускаю программу, то, прежде чем щелкнуть что-либо еще, я нажимаю на элемент меню "Вход" и успешно войти в систему, затем я нажимаю на второй вкладке, я получаю IOException с сообщением "Имя каталога неверно", Вот вершина стека вызовов:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError()
at System.IO.Path.InternalGetTempFileName(Boolean checkHost)
at System.IO.Path.GetTempFileName()
at System.Windows.Input.Cursor.LoadFromStream(Stream cursorStream)
at System.Windows.Input.Cursor..ctor(Stream cursorStream)
at System.Windows.Controls.GridViewColumnHeader.GetCursor(Int32 cursorID)
at System.Windows.Controls.GridViewColumnHeader.get_SplitCursor()
at System.Windows.Controls.GridViewColumnHeader.HookupGripperEvents()
at System.Windows.Controls.GridViewColumnHeader.OnApplyTemplate()
at System.Windows.FrameworkElement.ApplyTemplate()
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at System.Windows.Controls.GridViewHeaderRowPresenter.MeasureOverride(Size constraint)
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
...
(The rest of the stack is a bunch of Measure methods and Event handlers up until I get to the Threading and Application methods.)

Похоже, что программе не удается найти файл, содержащий информацию о курсоре для GridViewColumnHeader. ПРИМЕЧАНИЕ: я не использую какой-либо специальный курсор, только стандартные Windows; хотя у меня есть события, связанные с GridViewColumnHeader.

Эта ошибка не выдается, если я сначала нажимаю на вторую вкладку, затем вход в систему, и если я нажимаю на вторую вкладку, возвращаюсь назад на первую вкладку, а затем вход в систему. Так что, очевидно, что-то не так с тем, как я общаюсь с движком рендеринга.

В моем поиске в Интернете я встретил только одного человека, который столкнулся с чем-то похожим на это: https://social.msdn.microsoft.com/Forums/en-US/7fb648b6-2e4f-47da-91fd-a6fefd7e5462/impersonate-in-wpf-c-throws-the-directory-name-is-invalid-exception?forum=csharpgeneral, и реального ответа на проблему не было.

Я уверен, что я мог бы обойти это, "выбрав" вторую вкладку в коде позади и повторно выбрав первую вкладку. Тем не менее, я бы предпочел справиться с этим, не будучи слишком хакерским.

Любые предложения или понимание? Благодарю.

0 ответов

Другие вопросы по тегам