Problem to mapping network drive using snapin with batch file



  • OS: Windows 10 1709
    Hello,
    i have a problem to mapping a drive.
    The batch file contain:

    net use z: \192.168.1.1

    i created a snapin with this .bat file, but the drive not install.
    If i cut and paste net use z: \192.168.1.1 in the command prompt ,work!!
    with snapin not working, i adding in the snapin argument c:\out.txt (for viewing the output when the snapin is executed) the result is:

    C:\Program Files (x86)\FOG\tmp>net use z: \192.168.1.1\myshare

    the operation is easy, but not working.



  • Hi,

    no way to do this if you need to do this with credentials, would be a security leak!
    two possible solutions if you don’t give a * whos loggin in to this computer, place a file on the system with the desired net use line and execute it by registry hklm run or place the script in all users autostart.

    Isn’t this a ADS env with the possibility of logon scripts?

    https://www.experts-exchange.com/questions/23605204/Permanent-mapped-network-drive-for-ALL-users.html

    Regards X23


  • Moderator

    @fog-user said in Problem to mapping network drive using snapin with batch file:

    Ok the problem is due to the batch script, which runs as system user, not current user.
    i would like to apply this script:
    Set csv=\192.168.1.1\myshare\ip.csv

    This is your problem, still as I mentioned. The batch script runs as the SYSTEM user, which is a local administrative account. The SYSTEM user has zero domain rights, or rights on another computer. Your script will not work as it is currently designed.

    So how to make it work? You have 2 options.

    1. As part of your snapin, also include the csv file with your batch file. So where ever your batch script is run then you .csv file will be there.
    2. Map a network drive to the location of where the .csv file is and supply the required user credentials. for example.
    net use w: "\\192.168.1.1\myshare" /user:domain\user user-password
    for /F “skip=1 delims=, tokens=1-6” %a in (w:\ip.csv) do (if “ACF-UNDICI” == “%a” (
    ...
    net use w: /delete
    


  • @george1421
    Thank you for the answer.
    Ok the problem is due to the batch script, which runs as system user, not current user.
    i would like to apply this script:

    Set csv=\192.168.1.1\myshare\ip.csv
    for /f “skip=1 delims=, tokens=1-6” %%a in (%csv%) do (
    if “%computername%”=="%%a" (
    netsh int ipv4 set address “Ethernet” static %%b %%c %%d
    netsh int ipv4 set dnsserver “Ethernet” static %%e
    netsh int ipv4 add dnsserver “Ethernet” %%f
    )
    )

    It’s a batch script to change ip address to the pcs.
    The “csv” variable contains the network path to point at the .csv file,
    where are all pcs names and relative ip address.
    When i run the snapin with this script the script doesn’t get ip.csv and doesn’t read the ip.csv file.
    the output is:

    C:\Program Files (x86)\FOG\tmp>Set csv=\192.168.1.1\myshare\ip.csv

    C:\Program Files (x86)\FOG\tmp>for /F “skip=1 delims=, tokens=1-6” %a in (\192.168.1.1\myshare\ip.csv) do (if “ACF-UNDICI” == “%a” (
    netsh int ipv4 set address “Ethernet0” static %b %c %d
    netsh int ipv4 set dnsserver “Ethernet0” static %e
    netsh int ipv4 add dnsserver “Ethernet0” %f
    ) )

    If i copy ip.csv to the c: the script works “Set csv=c:\ip.csv” !!!
    Why doesn’t the script get ip.csv file from network path?
    I tried to map a drive with net use command to copy ip.csv to c:

    net use z: \192.168.1.1\myshare
    copy z:\ip.csv c:\

    but doesn’t work.
    Have you any idea to solve this problem?
    Sorry if it is off-topic.
    thanks you



  • Below is a snippit from one of my projects. This powershell script mounts a remote SMB share and should work as SYSTEM.

    #Drive letter for mapped drive to use, you may use whatever letter available.
    $driveLetter="J"
    
    #Your username:
    $username="wayne"
    
    #Your SMB password:
    $SMBPassword="MyAwesomePassword"
    
    
    #server hostname or IP address:
    $hostname="10.0.0.12"
    
    
    #Change working directory to the system drive.
    cd $env:SystemDrive
    
    #Here, check if the drive letter is already in use. If so, delete it.
    if (Get-PSDrive $driveLetter) {
        Get-PSDrive $driveLetter | Remove-PSDrive
    }
    
    #Gain access to the share using the defined settings above.
    $pass=$SMBPassword|ConvertTo-SecureString -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PsCredential("$username",$pass)
    New-PSDrive -name $driveLetter -Root "\\$hostname\" -Credential $cred -PSProvider filesystem
    

  • Moderator

    You have to remember one thing. The fog client service runs at the SYSTEM user not the current logged in user. So the drive is being mapped as SYSTEM and it works for the SYSTEM context, that context doesn’t apply the current logged in user. While I haven’t tried this, but log into a windows computer as a normal user, open a command shell as an administrator (or different user). Then map a drive as that admin user, is that drive visible in the normal user’s shell. Is a drive mapped in the normal user’s shell available to the admin user’s command window. I’m suspecting not.


 

446
Online

41.3k
Users

11.6k
Topics

110.9k
Posts

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.