Sign in to follow this  
Followers 0
cannondale

DriveGetDrive("NETWORK") returns 1 in @error

7 posts in this topic

Guys, I'm running v3.3.8.0. When trying to get a list of network (mapped) drives using DriveGetDrive("NETWORK"), the function returns 1 in @error and no array. Is this a bug or am I missing something?

Share this post


Link to post
Share on other sites



When I run DriveGetDrive with network as the parameter it works on my computer without a problem.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

I suspect you have no network drives or are calling the function wrong. Please provide an example that re-produces the problem.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

When I run DriveGetDrive with network as the parameter it works on my computer without a problem.

Thanks for your reply. When I run the example code from Autoit Help (code below) with the "ALL" parm, the function runs fine. If I replace the ALL parm with NETWORK, it fails (@error = 1). Any ideas?

Local $aArray = DriveGetDrive("ALL")
If @error Then
    ; An error occurred when retrieving the drives.
    MsgBox(4096, "DriveGetDrive", "It appears an error occurred.")
Else
    For $i = 1 To $aArray[0]
        ; Show all the drives found and convert the drive letter to uppercase.
        MsgBox(4096, "DriveGetDrive", "Drive " & $i & "/" & $aArray[0] & ":" & @CRLF & StringUpper($aArray[$i]))
    Next
EndIf

Share this post


Link to post
Share on other sites

The only time I ran into an error was when I disconnected the network drives connected to my computer.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

The only time I ran into an error was when I disconnected the network drives connected to my computer.

Thanks for the info. I have a mapped network drive X:. If I run DriveGetType("X:"), it returns "Network". However, when I run DriveGetDrive with network as the parm. it fails. I must be either missing something in the documentation or it's something with Win XP???

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Not sure exactly what your after but here is an example of how to get all the mapped drives for all users with profiles on a computer. Designed for Vista /Win7 using some functions from .AU3 files that can be found on this site.

#RequireAdmin
#include <./SecurityEx.au3>
#include <./Reg.au3>
#cs
Logic:
1. obtain mapped drives from users hive(s) "RemotePath" values
2. output as shortcut in G6 folder
#ce
#cs
http://www.autoitscript.com/forum/topic/75250-registry-udfs/page__p__545798#entry545798
Reg.au3 - Requires SecurityEx.au3
Current functions:
_RegLoadHive
_RegRestoreHive
_RegSaveHive
_RegUnloadHive
Notes: All functions are supposed to work on Windows 2000 and later
#ce
; ALL USER PROFILES NOT SYSTEM PROFILES - Look for NTUSER.dat, Load it if Found, Create Shortcut in C:G6%username%Mapped_Drives from Registry Entries
$UDrive = FileSelectFolder("Select the -> DRIVE LETTER <- containing the User Structure you wish to Scan", "")
If @error = 1 Then
MsgBox(0, "User Canceled Operation", "You chose to cancel. Closing utility now.")
Exit
EndIf
$Drive = StringLeft($UDrive, 3)
$OA = @OSArch
Select
Case $OA = "X86"
  $ProfileSearch = FileFindFirstFile($Drive & "Users*.*")
  ; Check if the search was successful
  If $ProfileSearch = -1 Then
   MsgBox(0, "Error", "No files/directories matched the Users directory search pattern. Exiting now.")
   Exit
  EndIf
  While 1
   $Profile = FileFindNextFile($ProfileSearch)
   If @error Then ExitLoop
   If $Profile == "All Users" Or $Profile == "LocalService" Or $Profile == "NetworkService" Or $Profile == "Administrator" Or $Profile == "Default" Or $Profile == @UserName Then
   Else
    $NTUSERDAT = FileFindFirstFile($Drive & "Users" & $Profile & "NTUSER.DAT")
    If $NTUSERDAT = -1 Then
     ;Exit
    EndIf
    While 1
     $DAT = FileFindNextFile($NTUSERDAT)
     If @error Then ExitLoop
     If $DAT = "" Then ExitLoop
     If StringInStr($DAT, 'NTUSER.DAT', 2) Then
      ;MsgBox(0, "WAHOO", $DAT)
      ;This .au3 library doesn't use the 64 suffix like the main autoit libraies
      ;MsgBox(0, "Hive Path", $Drive & "Users" & $Profile & "NTUSER.DAT")
      _RegLoadHive($Drive & "Users" & $Profile & "NTUSER.DAT", "HKEY_USERSNT")
      For $i = 1 To 10
       Local $var = RegEnumKey("HKUNTNetwork", $i)
       If @error <> 0 Then ExitLoop
       For $bi = 1 To 6
        Local $bvar = RegEnumVal("HKUNTNetwork" & $var, $bi)
        If @error <> 0 Then ExitLoop
        ;MsgBox(4096, "Value Name  # " & $bi & " under the Network Subkey", $bvar)
        If $bvar = "RemotePath" Then
         If FileExists("C:G6" & $Profile & "Mapped_Drives") Then
          ;MsgBox(4096, "", "")
          $Dest = "C:G6" & $Profile & "Mapped_Drives"
         Else
          DirCreate("C:G6" & $Profile & "Mapped_Drives")
          $Dest = "C:G6" & $Profile & "Mapped_Drives"
         EndIf
         $Target = RegRead("HKUNTNetwork" & $var, $bvar)
         ;MsgBox(0, "Creating Shortcut", $Dest & $var & ".lnk")
         FileCreateShortcut($Target, $Dest & $var & ".lnk", "", "", "", @SystemDir & "shell32.dll", "", "15", @SW_SHOWNORMAL)
        EndIf
       Next
       ;MsgBox(4096, "SubKey #" & $i & " under NTNetwork: ", $var)
      Next
      ;This .au3 library doesn't use the 64 suffix like the main autoit libraies
      _RegUnloadHive("HKEY_USERSNT")
     EndIf
    WEnd
    FileClose($NTUSERDAT)
   EndIf
  WEnd
  ; Close the search handle
  FileClose($ProfileSearch)
Case $OA = "X64"
  $ProfileSearch = FileFindFirstFile($Drive & "Users*.*")
  ; Check if the search was successful
  If $ProfileSearch = -1 Then
   MsgBox(0, "Error", "No files/directories matched the search pattern")
   Exit
  EndIf
  While 1
   $Profile = FileFindNextFile($ProfileSearch)
   If @error Then ExitLoop
   If $Profile == "All Users" Or $Profile == "LocalService" Or $Profile == "NetworkService" Or $Profile == "Administrator" Or $Profile == "Default" Or $Profile == @UserName Then
   Else
    $NTUSERDAT = FileFindFirstFile($Drive & "Users" & $Profile & "NTUSER.DAT")
    If $NTUSERDAT = -1 Then
     ;Exit
    EndIf
    While 1
     $DAT = FileFindNextFile($NTUSERDAT)
     If @error Then ExitLoop
     If $DAT = "" Then ExitLoop
     If StringInStr($DAT, 'NTUSER.DAT', 2) Then
      ;MsgBox(0, "WAHOO", $DAT)
      ;This .au3 library doesn't use the 64 suffix like the main autoit libraies
      ;MsgBox(0, "Hive Path", $Drive & "Users" & $Profile & "NTUSER.DAT")
      _RegLoadHive($Drive & "Users" & $Profile & "NTUSER.DAT", "HKEY_USERSNT")
      For $i = 1 To 10
       Local $var = RegEnumKey("HKU64NTNetwork", $i)
       If @error <> 0 Then ExitLoop
       For $bi = 1 To 6
        Local $bvar = RegEnumVal("HKU64NTNetwork" & $var, $bi)
        If @error <> 0 Then ExitLoop
        ;MsgBox(4096, "Value Name  # " & $bi & " under the Network Subkey", $bvar)
        If $bvar = "RemotePath" Then
         If FileExists("C:G6" & $Profile & "Mapped_Drives") Then
          ;MsgBox(4096, "", "")
          $Dest = "C:G6" & $Profile & "Mapped_Drives"
         Else
          DirCreate("C:G6" & $Profile & "Mapped_Drives")
          $Dest = "C:G6" & $Profile & "Mapped_Drives"
         EndIf
         $Target = RegRead("HKU64NTNetwork" & $var, $bvar)
         ;MsgBox(0, "Creating Shortcut", $Dest & $var & ".lnk")
         FileCreateShortcut($Target, $Dest & $var & ".lnk", "", "", "", @SystemDir & "shell32.dll", "", "15", @SW_SHOWNORMAL)
        EndIf
       Next
       ;MsgBox(4096, "SubKey #" & $i & " under NTNetwork: ", $var)
      Next
      ;This .au3 library doesn't use the 64 suffix like the main autoit libraies
      _RegUnloadHive("HKEY_USERSNT")
     EndIf
    WEnd
    FileClose($NTUSERDAT)
   EndIf
  WEnd
  ; Close the search handle
  FileClose($ProfileSearch)
Case Else
  ;Either the architecture was not determined or it was IA64 .
  Exit (111)
EndSelect
Edited by Casey

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0