CF WPF OpenFileDialog вызывает сбой в XP, а не в Vista - PullRequest
3 голосов
/ 23 августа 2010

У меня есть приложение WPF, которое отлично работает на моей машине для разработки под Vista, но не на производственных блоках XP.Единственная проблема - с вызовом OpenFileDialog.Show ().Как только я вызываю метод, приложение прекращает работу в окне XP.

Проблема не вызывает исключение.(Я окружил блок в блоке try-catch, но безрезультатно.) Когда я нажимаю на File-> Open, приложение просто открывается и завершает работу в XP.Интересно, что я могу записывать файлы на диск с помощью File-> Save и используя диалог Save As.Я попытался построить его для .Net 3.0 и 3.5, но это не имеет значения.

Я попробовал как Microsoft.Win32.OpenFileDialog, так и System.Windows.Forms.OpenFileDialog и получил точно такой жесимптом.

Блок кода для варианта Microsoft.Win32:

try  
{  
    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog().Value)
    {
        //do something
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString(), "Error!");
}

Единственная подсказка, которую я имею, - это следующая (частичная) запись из журнала событий безопасности.

Event Type:     Failure Audit
Event Source:   Security
Event Category: Object Access
Event ID:       560
Description:
Object Open:
        Object Server:  Security
        Object Type:    Key
        Object Name:    \REGISTRY\MACHINE\SOFTWARE\Microsoft\EnterpriseCertificates\Disallowed
        Accesses:       DELETE
                        READ_CONTROL
                        WRITE_DAC
                        WRITE_OWNER
                        Query key value
                        Set key value
                        Create sub-key
                        Enumerate sub-keys
                        Notify about changes to keys
                        Create link

Есть идеи?(Pleeeease!)

Ответы [ 3 ]

1 голос
/ 02 сентября 2010

Спасибо за совет.Я проверил как разрешения реестра, так и проблему полного доверия.Оказывается, что хотя я специально создавал свое приложение для .Net 3.0 (на основе стандартного организационного образа), существовала зависимость от .Net 3.5 SP1, которую я до сих пор не до конца понимаю.Решением моей проблемы было установить .Net 3.5 SP1 на все затронутые компьютеры.

Я просто хотел замкнуть петлю.Еще раз спасибо всем, кто внес идеи.

0 голосов
/ 23 августа 2010

Не похоже, что ваша производственная сборка работает с полным доверием.Вы используете сетевую папку?

0 голосов
/ 23 августа 2010

Кажется, есть проблема с правами доступа к разделу реестра.Моим первым предложением было бы проверить права доступа к этому ключу и убедиться, что списки ACL верны (лучше всего сравнить их с другой коробкой XP, в которой работает приложение).

Если разрешения в порядке, то вам следует попробоватьпереустановка .NET (возможно, установщик сбросит некоторые необходимые разрешения для разделов реестра).

Если ничего не помогает, переустановите XP на проблемных компьютерах, если у кого-то нет более хорошей идеи.

...