0

ServiceController を使用して別のマシンでサービスを管理しようとしています。

        var sc = new ServiceController(serviceName, machine);
        Console.WriteLine(sc.Status);

別の資格情報を使用する必要があるため、次を使用して偽装を実行します。

        var tokenHandle = IntPtr.Zero;
        bool returnValue = LogonUser(userName, domainName, password,
                                     LOGON32_LOGON_NEW_CREDENTIALS,
                                     LOGON32_PROVIDER_DEFAULT,
                                     ref tokenHandle);            
        if (!returnValue)
        {
            throw new Win32Exception(Marshal.GetLastWin32Error());
        }
        WindowsIdentity newId = new WindowsIdentity(tokenHandle);
        impersonatedUser = newId.Impersonate();

なりすましはうまくいくようです。しかし、私は InvalidOperationException を受け取り続けます:

System.InvalidOperationException: Cannot open MyService service on computer 'TargetMachine'. 
---> System.ComponentModel.Win32Exception: Access is denied

私のワークステーションはドメイン上にあり、ターゲット マシンはワークグループに参加しています。

ここで何が欠けているかについて何か考えはありますか?

4

1 に答える 1