Avatar billede sbarnney Nybegynder
05. april 2006 - 08:52 Der er 6 kommentarer og
1 løsning

Konvertere Mapped drev til UNC path.

Jeg mangler en function/metode der kan konvertere et lokal/mapped drev til UNC Path. Konverteringen skal forgå clientside, da den køres fra en webserver.

MVH Stig
Avatar billede dr_chaos Nybegynder
05. april 2006 - 09:06 #1
Avatar billede sbarnney Nybegynder
05. april 2006 - 12:35 #2
ja, noget i den stil. Men mit mapped drev er et server drev.

barnney
Avatar billede dr_chaos Nybegynder
05. april 2006 - 13:59 #3
Hvad mener du med et server drev ?
Avatar billede sbarnney Nybegynder
06. april 2006 - 14:10 #4
eks. har jeg et drev/fil der hedder o:\xxx\tekst.txt som peger på \\server1\vol1\xxx\tekst.txt

stig
Avatar billede sbarnney Nybegynder
07. april 2006 - 14:10 #5
Denne kode kan det jeg gerne vil, bare ikke clientSide. Så hvis nogen kan omskrive den.

Stig

using System;
using System.Runtime.InteropServices;

namespace ConvertMappedPathToUNC
{
    /// <summary>
    /// Converts a Mapped Path to its equivalent UNC Path
    /// </summary>
    class MyApp
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            string fileName = @"r:\myfile.txt";
            string UNCPath = PathConversions.GetUNCPath(fileName);
            Console.WriteLine(UNCPath);
            Console.ReadLine();
        }
    }

    class PathConversions
    {

        //
        // Import Declarations
        //
        [DllImport("mpr.dll")]
        private static extern int WNetGetUniversalName (string lpLocalPath,
            int dwInfoLevel, ref UNIVERSAL_NAME_INFO lpBuffer, ref int lpBufferSize);


        [DllImport("mpr", CharSet=CharSet.Auto)]
        protected static extern int WNetGetUniversalName (string lpLocalPath,
            int dwInfoLevel, IntPtr lpBuffer, ref int lpBufferSize);


        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
        private struct UNIVERSAL_NAME_INFO
        {
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpUniversalName;
        }


        //
        // Constants
        //
        protected const int NO_ERROR = 0;
        protected const int ERROR_MORE_DATA = 234;
        protected const int ERROR_NOT_CONNECTED = 2250;
        protected const int UNIVERSAL_NAME_INFO_LEVEL = 1;


        /// <summary>
        /// Converts a Mapped Path to its equivalent UNC Path
        /// </summary>
        public static string GetUNCPath(string mappedDrive)
        {
            UNIVERSAL_NAME_INFO uni = new UNIVERSAL_NAME_INFO();
            int bufferSize = Marshal.SizeOf(uni);


            int returnValue = WNetGetUniversalName(
                mappedDrive, UNIVERSAL_NAME_INFO_LEVEL,
                ref uni, ref bufferSize);


            if (ERROR_MORE_DATA == returnValue)
            {
                IntPtr pBuffer = Marshal.AllocHGlobal(bufferSize);;
                try
                {
                    returnValue = WNetGetUniversalName(
                        mappedDrive, UNIVERSAL_NAME_INFO_LEVEL,
                        pBuffer, ref bufferSize);


                    if (NO_ERROR == returnValue)
                    {
                        uni = (UNIVERSAL_NAME_INFO)Marshal.PtrToStructure(pBuffer,
                              typeof(UNIVERSAL_NAME_INFO));
                    }
                }
                finally
                {
                    Marshal.FreeHGlobal(pBuffer);
                }
            }
            switch (returnValue)
            {
                case NO_ERROR:
                    return uni.lpUniversalName;
                case ERROR_NOT_CONNECTED:
                    Console.WriteLine("Share is not connected");
                    return string.Empty;
                default:
                    return string.Empty;
            }
        }
    }
}
Avatar billede sbarnney Nybegynder
07. april 2006 - 14:10 #6
p.s. det er en console app.
Avatar billede sbarnney Nybegynder
14. februar 2007 - 19:34 #7
mig selv
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester