Монтирование папки как диска в Vista - PullRequest
0 голосов
/ 25 января 2009

Привет. Я пытаюсь смонтировать диск в Vista. Я использую следующий код из примера msdn,

     BOOL bFlag;
   TCHAR Buf[BUFSIZE];     // temporary buffer for volume name

   if( argc != 3 ) 
   {
      _tprintf( TEXT("Usage: %s <mount_point> <volume>\n"), argv[0] );
      _tprintf( TEXT("For example, \"%s c:\\mnt\\fdrive\\ f:\\\"\n"), argv[0]);
      return( -1 );
   }

  // We should do some error checking on the inputs. Make sure
  // there are colons and backslashes in the right places, etc. 

   bFlag = GetVolumeNameForVolumeMountPoint(
              argv[2], // input volume mount point or directory
                  Buf, // output volume name buffer
              BUFSIZE  // size of volume name buffer
           );

   if (bFlag != TRUE) 
   {
      _tprintf( TEXT("Retrieving volume name for %s failed.\n"), argv[2] );
      return (-2);
   }

   _tprintf( TEXT("Volume name of %s is %s\n"), argv[2], Buf );
   bFlag = SetVolumeMountPoint(
              argv[1], // mount point
                  Buf  // volume to be mounted
           );

   if (!bFlag)
     _tprintf (TEXT("Attempt to mount %s at %s failed.\n"), argv[2], argv[1]);

   return (bFlag);

Он всегда выдает ошибку параметра неверно, я также сначала попробовал определенное устройство, затем получило имя, оно также не работало. Есть идеи как заставить это работать?

Ответы [ 3 ]

1 голос
/ 25 января 2009

Вам нужно быть более конкретным! Где именно в коде вы получаете эту ошибку?

Вы можете попробовать выполнить следующую команду через system () и посмотреть, работает ли она следующим образом:

subst K: “c:\blabla"
0 голосов
/ 17 декабря 2015

Вместо того, чтобы пытаться сделать DefineDosDevice постоянным, вы, вероятно, в конечном итоге будете использовать regedit.

REGEDIT4 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"T:"="\\??\\C:\\Temp"

https://en.wikipedia.org/wiki/SUBST#Persisting_across_reboots

0 голосов
/ 25 января 2009

SetVolumeMountPoint - для монтирования тома на букву диска или в папку. Он не позволяет монтировать папку на букву диска. Это противоположность того, что вы хотите.

Чтобы сделать папку доступной в виде буквы диска, вы должны сделать эквивалент утилиты SUBST. Это использует DefineDosDevice, что-то вроде этого:

if (!DefineDosDevice(0, _T("Q:"), _T("C:\\Temp")))
    _ftprintf(stderr, _T("DefineDosDevice failed: %d\n"), GetLastError());

Если вы хотите сделать это постоянным, я думаю, вам нужно написать службу Windows, которая делает это во время загрузки. Я написал один около 10 лет назад.

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