Я должен установить 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
.