C# - NetUseAdd aus NetApi32.dll auf Windows Server 2008 und IIS7

Ich bin attemping zu verwenden NetUseAdd zum hinzufügen einer Aktie, die von einer Anwendung benötigt wird. Mein code sieht wie folgt aus.

[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern uint NetUseAdd(
     string UncServerName,
     uint Level,
     IntPtr Buf,
     out uint ParmError);

...

USE_INFO_2 info = new USE_INFO_2();
info.ui2_local = null;
info.ui2_asg_type = 0xFFFFFFFF;
info.ui2_remote = remoteUNC;
info.ui2_username = username;
info.ui2_password = Marshal.StringToHGlobalAuto(password);
info.ui2_domainname = domainName;

IntPtr buf = Marshal.AllocHGlobal(Marshal.SizeOf(info));

try
{
    Marshal.StructureToPtr(info, buf, true);

    uint paramErrorIndex;
    uint returnCode = NetUseAdd(null, 2, buf, out paramErrorIndex);

    if (returnCode != 0)
    {
        throw new Win32Exception((int)returnCode);
    }
}
finally
{
    Marshal.FreeHGlobal(buf);
}

Dies funktioniert gut auf unsere server 2003-Boxen. Aber bei dem Versuch zu bewegen, um Server 2008 und IIS7 diese funktioniert nicht mehr. Durch liberale Protokollierung ich habe festgestellt, dass es hängt auf der Linie Marshal.StructureToPtr(info, buf, true);

Ich habe absolut keine Ahnung warum das so ist kann mir jemand alle vergossen Licht auf es für Sag mir, wo könnte ich weitere Informationen erhalten?

InformationsquelleAutor Jack Ryan | 2009-07-09
Schreibe einen Kommentar