有问题的应用程序是.Net 2.0 Framework WinForms。它应该适用于大型用户群(从CD安装)。使用InnoSetup完成安装。
在两台机器上,应用程序不接受Drag&丢弃(D& D的应用和来源都具有相同的提升水平)。
添加Read&为应用程序快捷方式读取和执行INTERACTIVE SID的权限,此问题似乎已得到解决。
问题:如何添加这些权利和D& D以及如何在安装过程中检查/设置这些权利?
答案 0 :(得分:1)
这里有两个问题:
- 如何添加这些权利和D& D是如何相关的......
醇>
我完全不确定。我们在我们的WinForm应用程序中使用D& D来自shell和Outlook而没有任何问题。我甚至不确定您建议的ACL更改肯定会解决您遇到的任何问题。
- 如何在安装过程中检查/设置这些权限?
醇>
执行此操作的简便方法是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);
}
答案 1 :(得分:0)
只是在黑暗中拍摄,但是应用程序的Main()方法中是否存在[STAThread]属性?没有它,拖放根本不起作用。 (虽然这无法解释INTERACTIVE SID权利变更的行为变化)。
答案 2 :(得分:0)
您应该直接在Visual Studio环境之外运行项目的exe文件。我正在使用Windows Vista平台。