将自代码签名证书用于发布目的

Using Self Code Signing Certificates for Publish purpose

我在这个主题中搜索了很多次但没有成功,我在 WPF 上有一个应用程序使用单击一次发布,因此我不能使用管理员权限,我需要在安装中执行一些操作例如重启 SQL 服务器之类的过程,为此我需要管理员权限,因为我现在必须删除管理员权限后才开始使用 click 发布,所以我尝试使用以下代码重启我的应用程序以强制管理员权限但没有没工作

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

我搜索后仍然收到错误 "Can not open MSSQL$****** on computer" 当然我发现原因是需要管理员权限。 所以现在我正在研究代码签名证书,因为有人建议我这对我有用。 但我是个人,我的申请价格不足以购买付费证书,所以我想知道我是否可以制作一个自代码签名证书并单击一次使用它。 谢谢。

我终于自己弄清楚了问题,这是管理员权限。 问题是代码只需要 2-3 英里秒来执行,所以当我跟踪代码时,我发现我的代码确实停止了服务但无法再次启动它,因为它没有花时间以便服务完全停止。

解决方案很简单,只需几秒钟即可执行代码以停止服务。

所以只需要在两者之间添加一个代码。 第一

Imports System.Threading

然后使用如下代码

Dim service As ServiceController = New ServiceController("SQL Server (SQLEXPRESS)")
                    service.Stop()
                    Thread.Sleep(10000)
                    service.Start()

您会看到代码,其中 Thread.sleep 让应用程序等待 10 秒才能完成执行代码。

这个时间取决于它自己的机器,2-3 秒就足够了,但其他一些机器需要更多时间,所以为了安全起见,像我一样增加更多秒数。

谢谢,"Stay Safe"。