GetVolumeInformation для сетевых дисков, когда администратор возвращает 0 - PullRequest
1 голос
/ 06 декабря 2010

Я использую этот код для получения серийного тома

    [DllImport("Kernel32.dll", SetLastError = true)]
    extern static bool GetVolumeInformation(string vol, StringBuilder name, int nameSize, out uint serialNum, out uint maxNameLen, out uint flags, StringBuilder fileSysName, int fileSysNameSize);


    public static uint GetVolumeSerial(string strDriveLetter)
    {
        uint serialNum, maxNameLen, flags;
        bool ok = GetVolumeInformation(strDriveLetter, null, 0, out serialNum,out maxNameLen, out flags, null, 0);
        return serialNum;
    }

Он отлично работает, за исключением того, что когда я работаю администратором через повышение уровня UAC манифеста приложения, он всегда возвращает 0 для подключенных сетевых дисковно это работает иначе)

Возможно, администратор по какой-то причине не видит подключенный диск (можно подумать, что это было наоборот).Есть ли способ обойти это или просто вызывать этот код как зарегистрированный пользователь вместо этого?

Я на 64-битной Windows 7, но запускаю приложение в режиме x86

1 Ответ

0 голосов
/ 06 декабря 2010

Подключенные сетевые диски сопоставлены для одного пользователя.Когда вы подключаетесь как другой пользователь, поскольку этот другой пользователь заинтересован, диск не существует.

Если вам требуется несколько пользователей для доступа к одному и тому же сетевому пути, используйте фактический путь UNC ("\\server\path ").Подключенный сетевой диск удобен для людей.

Если вам действительно нужно несколько пользователей для доступа к подключенному сетевому диску, вам необходимо сопоставить его для каждого пользователя отдельно.Например, вы можете сделать это в пакетном файле, который запускается при входе в систему каждого пользователя и вызывает net use (хотя я не совсем уверен, что это поможет таким пользователям, как SYSTEM).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...