c # - Jeg skal have adgang til en netværkssti

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en windows service og forsøgte at kortlægge den ved hjælp af pinvoke. Koden fungerer fint i en konsol-applikation, men det har ingen effekt i en Windows-tjeneste. I henhold til dette:


'netbrug' kommando i en Windows Service


Jeg bør droppe netbruget tilgangen og i stedet give de rette privilegier, så min tjeneste kan få adgang til UNC stien (\ server \ share \ fil-sti). Hvordan opretter jeg disse rettigheder? Jeg antager det er grundlæggende Windows-privilegier, der skal sættes et sted. Enhver hjælp er værdsat.


[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern System.UInt32 NetUseAdd(string UncServerName, int Level, ref USE\_INFO\_2 Buf, out uint ParmError);

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct USE\_INFO\_2
{
    internal LPWSTR ui2\_local;
    internal LPWSTR ui2\_remote;
    internal LPWSTR ui2\_password;
    internal DWORD ui2\_status;
    internal DWORD ui2\_asg\_type;
    internal DWORD ui2\_refcount;
    internal DWORD ui2\_usecount;
    internal LPWSTR ui2\_username;
    internal LPWSTR ui2\_domainname;
}


og...


       static void Main()
        {
            USE\_INFO\_2 useInfo = new USE\_INFO\_2();
            useInfo.ui2\_remote = @"\xx.xx.xx.xxE$"; // "\xx.xx.xx.xxE$"
            useInfo.ui2\_password = "********";
            useInfo.ui2\_asg\_type = 0;    //disk drive
            useInfo.ui2\_usecount = 1;
            useInfo.ui2\_username = "Admin";
            useInfo.ui2\_domainname = "rendering";
            uint paramErrorIndex;
            uint returnCode = NetUseAdd(String.Empty, 2, ref useInfo, out paramErrorIndex);
            if (returnCode != 0)
            {
                throw new Win32Exception((int)returnCode);
            }
...

Bedste reference


Du kan starte din Windows-tjeneste som en domæne/windows-bruger, der har adgang til denne sti.