我正在尝试将外部文件(从Windows文件资源管理器)删除到ListView
控件上。我以前做过这件事,但似乎无法解决这些事件。
我的步骤如下:
3 - lvwReport
1 -ccOLEDropManual
我认为这就是我必须要做的事情,但我的ListView1_OLEDragDrop
事件并没有发生。
为了以防万一,我用一些项目填充了ListView。
我尝试在Effect = vbDropEffectCopy
和ListView1_OLEDragOver
中设置ListView1_OLEGiveFeedback
,但这似乎也没有效果(这甚至不会更改光标)
注意:我可以在拖出控件时触发StartDrag事件
有人可以确认这仍然适用于Windows 7吗?
答案 0 :(得分:1)
它似乎是UIPI (User Interface Privilege Isolation),这是一种新的安全功能,它不允许较低权限的应用程序与较高的特权应用程序进行交互。它可以被绕过,主要是为了允许UI自动化应用程序。要绕过三件事:
1。创建一个pfx文件并将其作为受信任的根证书颁发机构导入。
要创建一个pfx文件,请下载Openssl,然后从命令提示符下运行:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
然后,
openssl pkcs12 -export -out mycert.pfx -in mycert.pem -name "My Certificate"
然后导入证书:
2。在Visual Studio中使用带有signtool的证书对您的程序进行签名,方法是在命令提示符下输入以下内容:
signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
3. 在exe的清单文件中包含一个trustInfo部分,其中UIaccess定义设置为true。我是使用Make My Manifest:
完成的
现在,应用程序应该能够绕过UIPI,但只能在安全位置运行,例如“C:\ Program Files \”,“C:\ Windows \”或其子目录。
或者,您可以禁用UAC。
答案 1 :(得分:0)
以管理员身份运行时,拖放到ListView似乎不起作用。
Run As Admin
)它就不起作用。我不知道为什么不起作用