Олицетворение в Windows 10 - выигрышная форма приложения - PullRequest
0 голосов
/ 17 октября 2018

Мне было поручено изменить старое приложение win win

Приложение использует олицетворение для повышения привилегий пользователя с помощью библиотеки "Advapi32" и псевдонимом "CreateProcessWithLogonW"

Приложениевызывающему затем предоставляется разрешение на удаление файлов из папки «Спулер» исключительно в system32, никакие другие папки или файлы не доступны приложению независимо от этого.

Однако это работает в ОС Windows 7, когда пользователь запускает приложениеиз ОС Windows 10 он запрещает доступ.Я уже отключил UAC через настройки, как советовали предыдущие разработчики, но это дало тот же результат.

Ниже приведены фрагменты кода:

    Public Sub RunProgram()
        Try
            Dim siStartup As STARTUPINFO
            Dim piProcess As PROCESS_INFORMATION
            Dim intReturn As Integer

            siStartup.cb = Marshal.SizeOf(siStartup)
            siStartup.dwFlags = 0

            intReturn = CreateProcessWithLogon(username, domain, password, LOGON_WITH_PROFILE, application,
                                               CmdLine, NORMAL_PRIORITY_CLASS Or CREATE_DEFAULT_ERROR_MODE Or
                                               CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, IntPtr.Zero,
                                               IntPtr.Zero, siStartup, piProcess)

            If intReturn = 0 Then
                Throw New System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error())
            End If
            CloseHandle(piProcess.hProcess)
            CloseHandle(piProcess.hThread)
        Catch ex As Exception
            MsgBox(ex.Message & " - " & ex.StackTrace)
        End Try
    End Sub

    Private Declare Unicode Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" _
        (ByVal lpUsername As String,
         ByVal lpDomain As String,
         ByVal lpPassword As String,
         ByVal dwLogonFlags As Integer,
         ByVal lpApplicationName As String,
         ByVal lpCommandLine As String,
         ByVal dwCreationFlags As Integer,
         ByVal lpEnvironment As System.IntPtr,
         ByVal lpCurrentDirectory As System.IntPtr,
         ByRef lpStartupInfo As STARTUPINFO,
         ByRef lpProcessInfo As PROCESS_INFORMATION) As Integer

    Private Const LOGON_NETCREDENTIALS_ONLY As Integer = &H2
    Private Const NORMAL_PRIORITY_CLASS As Integer = &H20
    Private Const CREATE_DEFAULT_ERROR_MODE As Integer = &H4000000
    Private Const CREATE_NEW_CONSOLE As Integer = &H10
    Private Const CREATE_NEW_PROCESS_GROUP As Integer = &H200
    Private Const LOGON_WITH_PROFILE As Integer = &H1

Это проблема приложения?Или проблема конфигурации Windows 10?

...