Как запустить процесс powershell с помощью ImpersonationLevel? - PullRequest
0 голосов
/ 11 мая 2018

Я должен установить RPC_C_IMP_LEVEL_IMPERSONATE для процесса powershell.У вас есть идеи, как мне этого добиться?

Я только нашел эту информацию.Речь идет об изменении уровней олицетворения по умолчанию с использованием C ++ через CoInitializeSecurity.Но, к сожалению, я не могу использовать его для powershell.Требуется наличие функции main.

/// <summary>
/// The main entry point for the application.
/// Do not set STAThread since CoInitializeSecurity is called 
/// with to high security automatically (and it can only be called once).
/// </summary>
//[STAThread]
static void Main() 
{
    // Set threading apartment
    System.Threading.Thread.CurrentThread.ApartmentState = ApartmentState.STA; 
    CoInitializeSecurity( IntPtr.Zero, -1, IntPtr.Zero,
        IntPtr.Zero,RpcAuthnLevel.None ,
        RpcImpLevel.Impersonate,IntPtr.Zero, EoAuthnCap.None, IntPtr.Zero ); 

    Application.MainForm = new MainForm();
    System.Windows.Forms.Application.Run(Application.MainForm);
}

У меня есть клиент (powershell) и служба.Я не могу позвонить в сервис, потому что он дает мне следующую ошибку:

Either a required impersonation level was not provided, or the provided impersonation level is invalid.

И я обнаружил в *.log, что текущий уровень олицетворения Identification.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...