Vista & C # - проблема перетаскивания (не связана с возвышением) - PullRequest
6 голосов
/ 02 марта 2009

Приложение, о котором идет речь, - WinNet Forms .Net 2.0. Предполагается работать на большой пользовательской базе (установка с CD). Установка выполнена с использованием InnoSetup.

На двух машинах приложение не принимает Drag & Drop (и приложение, и источник D & D имеют одинаковый уровень высот).

При добавлении прав на чтение и чтение и выполнение к интерактивному SID для ярлыка приложения эта проблема, похоже, решена.

Вопрос: как связаны добавление этих прав и D & D и как проверить / установить эти права в процессе установки?

Ответы [ 3 ]

1 голос
/ 13 октября 2009

У вас есть два вопроса здесь:

  1. как связаны эти права и D & D и ...

В этом я совершенно не уверен. Мы используем D & D в нашем приложении WinForm для / из оболочки и Outlook без каких-либо проблем в Vista. Я даже не уверен, что предложенное вами изменение ACL наверняка решит любую проблему, с которой вы столкнулись.

  1. как проверить / установить эти права в процессе установки?

Самый простой способ сделать это - создать класс установки .Net и добавить следующий код:

    public static void ReplacePermissions(string filepath, WellKnownSidType sidType, FileSystemRights allow)
    {
        FileSecurity sec = File.GetAccessControl(filepath);
        SecurityIdentifier sid = new SecurityIdentifier(sidType, null);
        sec.PurgeAccessRules(sid); //remove existing
        sec.AddAccessRule(new FileSystemAccessRule(sid, allow, AccessControlType.Allow));
        File.SetAccessControl(filepath, sec);
    }
0 голосов
/ 08 октября 2009

Вы должны запустить exe-файл для проекта напрямую и вне среды Visual Studio. Я работаю на платформе Windows Vista.

0 голосов
/ 02 марта 2009

Просто выстрел в темноте, но присутствует ли атрибут [STAThread] в методе Main () вашего приложения? Без этого перетаскивание не будет работать вообще. (Хотя это не объясняет изменения в поведении изменением прав на ИНТЕРАКТИВНЫЙ СИД).

...