2

を使用してネットワークサービスを偽装しようとしていますadvapi32

LogonUser("NETWORK SERVICE", "NT AUTHORITY", null, LOGON32_LOGON_SERVICE, LOGON32_PROVIDER_DEFAULT, ref token)

ただしAccess is denied、Windows 8 マシンではエラーが発生し続けます。何か案は?(私はたくさんグーグルで検索しましたが、答えが見つかりません)。

<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">        
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="Custom" />
        <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application />      
  </compatibility>  
</asmv1:assembly>

編集:

したがって、いくつかの試行の後、偽装は機能しているように見えますが、ホストのネットワーク サービスとして認証することはできません。アプリケーション プールをネットワーク サービスの下で実行するにはどうすればよいでしょうか?

使用する

LOGON32_LOGON_SERVICE

結果:

Unhandled Exception: System.ComponentModel.Win32Exception: Access is denied
   at Tools.Network.Impersonator.Impersonate(String userName, String domainName,
 String password, LogonType logonType, LogonProvider logonProvider)
   at Tools.Network.Impersonator..ctor(String userName, String domainName, Strin
g password, LogonType logonType, LogonProvider logonProvider)
   at Impersonation.Program.Main(String[] args)

使用する

LOGON32_LOGON_NEW_CREDENTIALS

結果:

System.IO.IOException: Logon failure: unknown user name or bad password.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Bo
olean overwrite)
   at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean ov
erwrite)
   at Impersonation.Program.Main(String[] args)

困惑。

4

2 に答える 2

3

ついに!私は答えを見つけました:

「ネットワーク サービス」として「実行」するにはどうすればよいですか?

http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html

Windows 8..「マイクロソフトは、Windows 8 / Windows Server 2012 でこのデフォルトの動作を変更しました。対話型サービスを許可するには、レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows を見つけて、NoInteractiveServices を 1 から 0 に変更する必要があります。 ."

于 2013-01-10T18:26:11.567 に答える
1

これはコードを含む本当に良いリンクであり、これがあなたが探しているものだと私が思うすべてのものです。このリンクがうまくいくかどうか教えてください

.NET(C#)ネットワーククレデンシャルによる偽装は、ログオンタイプとしてLOGON32_LOGON_NEW_CREDENTIALSに対して機能します。これには、ログオンプロバイダータイプとしてLOGON32_PROVIDER_WINNT50を選択する必要があります。

于 2013-01-04T23:55:57.203 に答える