2009-03-02 39 views
6

有问题的应用程序是.Net 2.0 Framework WinForms。它应该在大型用户基础上工作(从CD安装)。使用InnoSetup完成安装。Vista&C# - 拖放问题(与海拔无关)

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

通过添加读取&阅读&对应用程序快捷方式执行INTERACTIVE SID的权限,此问题似乎已解决。

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

+1

此外,这也被连接到安装程序,其中 - 如果是安装OUT程序文件的( “可信赖的地点”),它会表现不好。 – 2009-03-03 07:16:55

+1

好问题,不知道答案。 – 2009-10-08 01:24:51

回答

0

只是在黑暗中拍摄,但是应用程序的Main()方法中存在[STAThread]属性?没有它,拖放将不起作用。 (虽然这不能解释随着INTERACTIVE SID权利变化的行为变化)。

0

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

1

您这里有两个问题:

  1. 如何以及将这些权利和d & d有关...

这个我完全不能确定。我们在我们的WinForm应用程序中使用D & D到/从外壳和Outlook在Vista中没有任何问题。我甚至不确定你建议的ACL更改是否可以解决你遇到的任何问题。

  1. 如何在安装过程中检查/设置这些权限?

最简单的方式做,这是create a .Net install class并添加以下代码:

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); 
    }