Vb.net 打开UAC窗口两次加载我的表单
我使用下面的代码来打开UAC窗口。它可以正常工作,但我的表单包含提升此窗口的按钮,显示了两次。我的意思是,如果我把它放在CopyFiile按钮中,当我点击这个按钮时,它会弹出UAC窗口,复制文件,给出成功消息,然后打开包含copyfile按钮的同一表单的另一个实例。请帮忙Vb.net 打开UAC窗口两次加载我的表单,vb.net,Vb.net,我使用下面的代码来打开UAC窗口。它可以正常工作,但我的表单包含提升此窗口的按钮,显示了两次。我的意思是,如果我把它放在CopyFiile按钮中,当我点击这个按钮时,它会弹出UAC窗口,复制文件,给出成功消息,然后打开包含copyfile按钮的同一表单的另一个实例。请帮忙 Dim proc As New ProcessStartInfo proc.UseShellExecute = True proc.WorkingDirectory = Environment.Current
Dim proc As New ProcessStartInfo
proc.UseShellExecute = True
proc.WorkingDirectory = Environment.CurrentDirectory
proc.FileName = Application.ExecutablePath
proc.Verb = "runas"
Try
Process.Start(proc)
Catch
' The user refused to allow privileges elevation.
MsgBox("Permission denied by user ! Can not proceed.", MsgBoxStyle.Critical)
vrIfDenied = 1
Return
End Try
如果我错了,请纠正我,但我看到您的
proc
filename属性与其自身相等。您正在运行同一个应用程序,并创建了当前应用程序的两个实例,将其添加到代码中:
<DllImport("shell32.dll", EntryPoint:="IsUserAnAdmin")> _
Public Shared Function IsUserAnAdmin() As Boolean
End Function
现在,您可以添加第二个按钮(btnElevateMe),该按钮将使用您最初发布的代码提升权限并显示UAC提示。当使用特权运行时,它将变灰
此外,请在“End Try”之后向代码中添加以下内容:
在启动第二个具有提升权限的实例后,它将关闭应用程序。你是说proc.Verb=“runas”我刚从微软网站上选择了这段代码。请更正我该怎么做。不,我的意思是proc.FileName=Application.ExecutablePath意味着要运行的文件名与当前运行的应用程序相同,因此这将生成应用程序的2个实例。我想你必须关闭“未经审核的表格”,非常感谢。让我试试这个。我回到您身边。
Me.Dispose只处理表单使用的资源(内存除外)。
-MSDN。它根本不会关闭窗体。。。您应该使用Me.Close
If IsUserAnAdmin() = False Then
btnCopyFile.enabled=false
ElseIf IsUserAnAdmin() = True Then
btnCopyFile.enable=true
btnElevateMe.enabled=false
End If
Application.Exit()