C#不承认SafeTokenHandle

我有一个编译错误与C#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Security.Principal; using System.Security.Permissions; using System.Runtime.ConstrainedExecution; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; [DllImport("advapi32.dll", SetLastError = true,CharSet = CharSet.Unicode)] public static extern bool ***LogonUser***(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out ***SafeTokenHandle*** phToken); 

在*符号(LogonUser的和SafeTokenHandle)字。 我的C#编译器由于未知types而无法编译。 我用visual studio 2012,windows 64,framework 4.0开发。

请帮忙。

这是因为这些结构没有在你的项目中定义。

从我所知道的你neet的方法是:

 [DllImport("advapi32.dll", SetLastError=true)] public static extern bool LogonUser( string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken ); 

这里是对功能的解释

SafeTokenHandle不是.NET Framework的一部分。 我假设你的代码与本文有些相关,所以你错过了定义:

 public sealed class SafeTokenHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeTokenHandle() : base(true) { } [DllImport("kernel32.dll")] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [SuppressUnmanagedCodeSecurity] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool CloseHandle(IntPtr handle); protected override bool ReleaseHandle() { return CloseHandle(handle); } }