2009-03-02 42 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); 
    }