Win7系統應用程序不能拖放文件原來又是UAC是惹的禍


 


一定要先開啟文本框的拖放屬性this.txtPath.AllowDrop =  true;
本來就是一個很簡單的問題,媽的,浪費我一個多小時。願意就是罪魁禍首就是win7的UAC權限導致的。又是一個蛋疼的問題!
  private  void txtPath_DragEnter( object sender, DragEventArgs e)
        {
             if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.All;
             else
                e.Effect = DragDropEffects.None;
        }

         private  void txtPath_DragDrop( object sender, DragEventArgs e)
        {
             string[] s = ( string[])e.Data.GetData(DataFormats.FileDrop,  false);
             if (s.Length >  0)
            {
                 // 指定html文件類型。
                 if (System.IO.Path.GetExtension(s[ 0]).ToLower() ==  " .html ")
                {
                    txtPath.Text = s[ 0];
                }
                 else
                {
                    XtraMessageBox.Show( " 只支持拖放html格式的文件 "" 消息 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

我的Visual Studio2012 是以管理員身份運行,導致Debug的時候應用程序也是以管理員身份運行的,然后Win7系統在UAC的保護下,控件的DragEnter/DragOver/DragDrop等事件統統都不被觸發。

 


從VISTA->WINDOWS7 UAC(用戶帳戶控制)出現到至今,拖放文件一直存在一個問題:
“以管理員身份運行”的任何程序,均不能正常接受拖放進窗口中的文件!


當我們的WinForm應用程序需要以管理員的身份運行時(比如,為了訪問windows注冊表),我們需要在程序清單(app.manifest文件)中將UAC選項改為 " requireAdministrator "(可以參考如何自動以管理員身份運行.NET程序?)。如此生成的exe的圖標在XP和Win2003下是沒有變化的,但是放到win7下面,你會發現圖標的右下角多了一個小盾牌。

 

如何解決Win7下這個拖拽的問題了?
解決辦法:一、應用程序不以管理員身份運行。或者visual studio也不要以管理員身份運行。

解決辦法二:超級無恥方法:UAC設置為0級就無問題了


UAC設置為0級就無問題了
如果有更好的方法,請留言! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM