6

有问题的应用程序是 .Net 2.0 Framework WinForms。它应该适用于大型用户群(从 CD 安装)。使用 InnoSetup 完成安装。

在两台机器上,应用程序不接受拖放(应用程序和 D&D 的源都具有相同的海拔高度)。

通过为应用程序快捷方式的 INTERACTIVE SID 添加 Read & Read&Execute 权限,似乎解决了这个问题。

问题:添加这些权限和 D&D 是如何关联的,以及如何在安装过程中检查/设置这些权限?

4

3 回答 3

1

您在这里有两个问题:

  1. 添加这些权利和 D&D 是如何相关的,并且...

这我完全不确定。我们在 WinForm 应用程序中使用 D&D 与 shell 和 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);
    }
于 2009-10-12T20:04:40.343 回答
0

您应该直接在 Visual Studio 环境之外运行项目的 exe 文件。我正在使用 Windows Vista 平台。

于 2009-10-08T01:22:27.580 回答
0

只是在黑暗中拍摄,但您的应用程序的 Main() 方法中是否存在 [STAThread] 属性?没有它,拖放将根本不起作用。(尽管这无法解释随着 INTERACTIVE SID 权限变化而导致的行为变化)。

于 2009-03-02T08:24:47.450 回答