Vb.net 以管理员身份运行DLL
我尝试在管理上下文中执行单个DLL,以强制用户在调用方法时输入UAC,以防他作为普通用户进行身份验证 我在这里找到了建议: 我试图创建Nathan M建议的内容,但我没有显示UAC控件 这是我正在使用的代码: 主要用途:Vb.net 以管理员身份运行DLL,vb.net,admin,manifest,uac,Vb.net,Admin,Manifest,Uac,我尝试在管理上下文中执行单个DLL,以强制用户在调用方法时输入UAC,以防他作为普通用户进行身份验证 我在这里找到了建议: 我试图创建Nathan M建议的内容,但我没有显示UAC控件 这是我正在使用的代码: 主要用途: 导入系统 导入System.Diagnostics.Eventing.Reader 导入GetUninstallToken.UninstallToken 公开课表格1 私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击 尝试 变暗t作为新的开始 t、 测试(
导入系统
导入System.Diagnostics.Eventing.Reader
导入GetUninstallToken.UninstallToken
公开课表格1
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
尝试
变暗t作为新的开始
t、 测试()
特例
结束尝试
端接头
我在项目中添加了一个简单的DLL文件,仅用于获取身份验证对话框:
名称空间卸载令牌
公开课开始了
公共子测试()
MsgBox(“测试”)
端接头
末级
结束命名空间
我已经创建了一个清单文件,它应该应用于具有此配置的DLL
因此,当我运行程序并单击按钮时,会调用DLL并显示MsgBox,但没有UAC-我不是以管理员身份运行VS
你知道我错过了什么吗?似乎清单文件可能会被忽略
我正在Win 10 19H2上使用Microsoft Visual Studio Community 2019版本16.5.4-我以普通用户身份执行。这是我最后想到的:
我已生成一个新的EXE,其中包含请求的子功能
我添加了一个清单文件,将执行上下文设置为“requireAdministrator”
我使用以下代码在主应用程序中调用该exe:
Try
Dim process As System.Diagnostics.Process = Nothing
Dim processStartInfo As System.Diagnostics.ProcessStartInfo
processStartInfo = New System.Diagnostics.ProcessStartInfo()
processStartInfo.FileName = ".\MyApplication.exe"
processStartInfo.Verb = "runas"
processStartInfo.Arguments = ""
processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
processStartInfo.UseShellExecute = True
process = System.Diagnostics.Process.Start(processStartInfo)
Catch ex As Exception
MsgBox("You need to be administrator to request this function")
End Try
这样,我在调用函数时确实会收到UAC提示,如果没有,则会向用户显示一条错误消息
可能不是最优雅的事情,但简单且有效;) 这回答了你的问题吗?你好,谢谢你提供的信息。事实上,我在搜索时没有想到这一点,答案实际上与我在berfore(我想)找到的不同。。。将检查rundll的内容,看看这是否有帮助。Thx Danielt关于这个问题的第一条评论中链接的答案是正确的:没有“以管理员身份运行DLL”这样的事情,因为DLL包含由进程执行的代码,并且只有进程可以提升。正如另一个答案所说:如果您需要DLL中的代码来运行提升版,请编写一个调用DLL中代码的可执行文件,然后运行提升版的可执行文件。