Vb.net 使用自代码签名证书进行发布
我在这个主题中搜索了很多次,但运气不好,我在WPF上有一个应用程序,使用单击一次发布,因此我不能使用管理员权限,我需要在安装过程中执行一些操作,例如重新启动SQL server,为此我需要管理员权限。由于我开始使用click once发布,我现在必须删除管理员权限,因此我尝试使用以下代码重新启动应用程序以强制管理员权限,但没有成功Vb.net 使用自代码签名证书进行发布,vb.net,clickonce,Vb.net,Clickonce,我在这个主题中搜索了很多次,但运气不好,我在WPF上有一个应用程序,使用单击一次发布,因此我不能使用管理员权限,我需要在安装过程中执行一些操作,例如重新启动SQL server,为此我需要管理员权限。由于我开始使用click once发布,我现在必须删除管理员权限,因此我尝试使用以下代码重新启动应用程序以强制管理员权限,但没有成功 Public Function IsRunAsAdmin() As Boolean Try Dim id As WindowsIdentity
Public Function IsRunAsAdmin() As Boolean
Try
Dim id As WindowsIdentity = WindowsIdentity.GetCurrent()
Dim principal As WindowsPrincipal = New WindowsPrincipal(id)
Return principal.IsInRole(WindowsBuiltInRole.Administrator)
Catch __unusedException1__ As Exception
Return False
End Try
End Function
Public Sub AdminRelauncher()
If Not IsRunAsAdmin() Then
Dim proc As ProcessStartInfo = New ProcessStartInfo()
Dim procExecuting As New Process
proc.UseShellExecute = True
proc.WorkingDirectory = Environment.CurrentDirectory
proc.FileName = Assembly.GetEntryAssembly().CodeBase
proc.Verb = "runas"
Try
procExecuting = Process.Start(proc)
Application.ExitThread()
Application.Exit()
Catch ex As Exception
Console.WriteLine("This program must be run as an administrator! " & vbLf & vbLf & ex.ToString())
End Try
End If
End Sub
我仍然得到错误“无法打开MSSQL$******在计算机上”后,我搜索当然我发现原因是管理员权限需要。
所以现在我正在研究代码签名证书,因为有人告诉我这对我来说是可行的。
但我是个人,我的应用程序价格不足以购买付费证书,所以我想知道我是否可以制作一个自我代码签名证书,并与click once一起使用。
谢谢。我终于自己解决了这个问题,那是管理员权限问题。 问题是代码只需要2-3英里秒就可以执行,所以当我跟踪代码时,我发现我的代码确实停止了服务,但无法再次启动,因为它没有花时间让服务完全停止 解决方案很简单,因为它只需要几秒钟就可以在执行代码后停止服务 所以只需要在两者之间添加一个代码。 首先 然后使用如下代码
Dim service As ServiceController = New ServiceController("SQL Server (SQLEXPRESS)")
service.Stop()
Thread.Sleep(10000)
service.Start()
您可以看到Thread.sleep所在的代码,它让应用程序等待10秒钟,然后才能完成执行代码
这个时间取决于机器本身,2-3秒就足够了,但是其他一些机器需要更多的时间,所以为了安全起见,只需像我一样增加更多的秒数
谢谢你,还有“保持安全”
Dim service As ServiceController = New ServiceController("SQL Server (SQLEXPRESS)")
service.Stop()
Thread.Sleep(10000)
service.Start()