Мне было поручено изменить старое приложение 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?