Ich habe bei Windows 7 Pro. 64bit festgestellt das ich mit dem "net use" befehl
die zeile so eingeben muss als wenn ich mich an einer domäne anmelden will.
nur gebe ich anstall den domain name den rechner namen an.
das habe ich festgestell als ich versucht habe eine freigabe von einem windows xp rechner auf einem win 7
zu mounten, er fragte immer beim zugriff auf die freigabe nach dem passwort.
ich nutze immer eine batch datei (.cmd) die ich in meinen autostart gelegt habe.
Rechner name: NAS
Benutzer: hans
Freigabe: fax
passwort: fax
hier die erklärung des befehls "net use"
Code
NET USE[Gerätename | *] [\\Computername\Freigabename[\Volume] [Kennwort | *]] [/USER:[Domänenname\]Benutzername] [/USER:[Domänenname im Punktformat\]Benutzername] [/USER:[Benutzername@Domänenname im Punktformat] [/SMARTCARD] [/SAVECRED] [[/DELETE] | [/PERSISTENT:{YES | NO}]]NET USE {Gerätename | *} [Kennwort | *] /HOMENET USE [/PERSISTENT:{YES | NO}]
den code als
Code
@ECHO OFF
ECHO Laufwerk M verbinden
:: Prüft das System ob es sich um Windows XP und Windows 2000 handelt
call :FncWinVer -e "2000" "XP" && GOTO XP
:: Prüft das System NICHT 2000, XP
call :FncWinVer -e "2000" "XP" || GOTO WIN7
:XP
set user=hans
GOTO PW
:WIN7
set user=NAS\hans
GOTO PW
:PW
set pw=fax
GOTO NETUSE
:NETUSE
NET USE M: /DELETE
NET USE M: \\192.168.8.110\FAX %pw% /user:%user% /persistent:yes
GOTO :EOF
:FncWinVer ::Version 2.0.1
::Parameters: [-e | -s] [...]
::Options: -e <Name> [Name2] When the Operating System is one of the name, function returns true (0)
:: Name can be "NT3", "NT4", "2000", "2003", "2008", "XP", "Vista"
:: For Detail-Information use e.g. "XP Professional:::German:SP2" (see Example)
:: -s <VarNameToReturnOSString>
::Example: if "%OS%" == "" echo The OS is DOS, Win3.x or Win9x & goto :EOF (you can not use batch-functions)
:: call :FncWinVer (print OS-Version, e.g. "Windows XP Professional:5.1 Build 2600:NonSuite:German:SP2:32 bit")
:: call :FncWinVer -s _x (set _x=OS-Version)
:: for /F "tokens=1-6 delims=:" %%a in ("%_x%") do (
:: echo Operating System... %%a &rem e.g. "Windows XP Professional"
:: echo Version............ %%b &rem e.g. "5.1 Build 2600"
:: echo Product Suite...... %%c &rem e.g. "Terminal Server, ..."
:: echo Localization....... %%d &rem e.g. "German"
:: echo Service Pack....... %%e &rem e.g. "SP2"
:: echo Architecture....... %%f &rem e.g. "32 bit"
:: )
:: call :FncWinVer -e "NT" "XP" && (
:: echo The Operating System is Windows NT3 or NT4 or XP
:: call :FncWinVer -e "XP::::SP2" && echo The OS is Windows XP with Service Pack 2
:: call :FncWinVer -e "XP Professional:::SP2" && echo The OS is Windows XP Profssional with SP2
:: call :FncWinVer -e "XP Professional::German:SP2" && echo The OS is German Windows XP Prof with SP2
:: call :FncWinVer -e "XP Pro::Ger:SP2" && echo The OS is German Windows XP Prof with SP2
:: )
:: call :FncWinVer -e "NT4" "XP" || echo The OS is not Windows NT4 or XP (&&=is true; ||=is not true)
:: call :FncWinVer -e "NT" "XP" "Vista" "2000" "2003::::SP0" "2003::::SP1" || (
:: echo This is Windows 2003 with SP2 or higher - also can be Windows 2008, etc.
:: )
:: call :FncWinVer -e "::Terminal Server::" && echo This is a Terminal Server
:: call :FncWinVer -e ":5.1:::" && echo This is Version 5.1
:: call :FncWinVer -e ":Build 2600:::" && echo This is Build 2600
:: call :FncWinVer -e ":5.1 Build 2600:::" && echo This is Version 5.1 Build 2600
:: call :FncWinVer -e ":5.1 Build 2600" && echo This is Version 5.1 Build 2600
::Return: 0=Operating System found; 1=Operating System not found; 2=syntax error
setlocal EnableDelayedExpansion & set "_#SP=SP0" & set "_#OSEX1=NonSuite" & set "_#TMP=" & set "_#EL=0" & set "_#Prd=unknown system"
if exist "%systemroot%\system32\prodspec.ini" ( ::Name und Sprache ermitteln; NT3 bis Windows 2008
for /F "tokens=1* delims==" %%a in ('type "%systemroot%\system32\prodspec.ini"') do (
if /i "%%a" == "Product" set _#Prd=%%b
if /i "%%a" == "Localization" set _#Lang=%%b
)
) else ( ::ab Vista
set _#Lang=%LC_LANG%
set _#TmpPrdFile=%TMP:"=%\%~n0_Prd%RANDOM%.tmp &::Da der ProductName, z.B. "Vista (TM)", auch Klammern enthalten kann...
for /f "tokens=2,* delims= " %%a in ('%SYSTEMROOT%\system32\reg.exe query
"HKLM\Software\Microsoft\Windows NT\CurrentVersion"
/v "ProductName" 2^>NUL ^| find /i "ProductName"') do (echo."%%b") > "!_#TmpPrdFile!"
set /p "_#Prd=" < "!_#TmpPrdFile!" &::... wird die Variablen-Zuweisung ueber diesen Umweg vorgenommen.
set "_#Prd=!_#Prd:(=!" & set "_#Prd=!_#Prd:)=!" & set "_#Prd=!_#Prd:"=!"
del "!_#TmpPrdFile!"
)
if exist "%windir%\SysWOW64" ( set "_#Bit=64 bit" ) else ( set "_#Bit=32 bit" )
set "_#Prd=%_#Prd:NT Workstation 4.=NT4 Workstation 4.%" & set "_#Prd=%_#Prd:NT Server 4.=NT4 Server 4.%"
set "_#Prd=%_#Prd:NT Workstation 3.=NT3 Workstation 3.%" & set "_#Prd=%_#Prd:NT Server 3.=NT3 Server 3.%"
if not exist "%SYSTEMROOT%\system32\reg.exe" ( ::NT3, NT4 und w2k kennen keine reg.exe, daher...
set _#TmpRegFile=%TMP:"=%\%~n0_RegExport%RANDOM%.tmp
%SYSTEMROOT%\regedit.exe /E "!_#TmpRegFile!" "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion"
type "!_#TmpRegFile!" > "!_#TmpRegFile!_ANSI-Format"
rem Von den ca. 60.000 rekursiv exportierten Registry-Zeilen die ersten 100 Zeilen extrahieren...
(for /L %%i in (1,1,100) do set /p "_x=" & echo.!_x!) <"!_#TmpRegFile!_ANSI-Format" >"!_#TmpRegFile!"
rem ...damit die nun folgende for-Schleife wesentlich schneller abgearbeitet werden kann:
for /f "tokens=1,2,4 delims== " %%a in ('type "!_#TmpRegFile!"') do (
if /i %%a == "CSDVersion" set _#SP=SP%%c
if /i %%a == "CurrentVersion" set _#Ver=%%b
if /i %%a == "CurrentBuildNumber" set _#Build=%%b
)
del "!_#TmpRegFile!" "!_#TmpRegFile!_ANSI-Format"
set _#OSEX1=NT3_NT4_or_2000=Product Suite can not be identified
) else ( ::Windows XP, 2003 oder hoeher... (reg.exe ist schneller und kann MULTI_SZ "ProductSuite" auslesen)
for /f "tokens=1,3,5 delims= " %%a in ('%SYSTEMROOT%\system32\reg.exe query
"HKLM\Software\Microsoft\Windows NT\CurrentVersion" 2^>NUL') do (
if /i "%%a" == "CSDVersion" set _#SP=SP%%c
if /i "%%a" == "CurrentVersion" set _#Ver=%%b
if /i "%%a" == "CurrentBuildNumber" set _#Build=%%b
)
for /f "tokens=2,* delims= " %%a in ('%SYSTEMROOT%\system32\reg.exe query
"HKLM\System\CurrentControlSet\Control\ProductOptions"
/v "ProductSuite" 2^>NUL ^| find /i "ProductSuite"') do set _#TMP=%%b
if defined _#TMP set _#TMP=!_#TMP:\0\0=!
if defined _#TMP set _#TMP=!_#TMP:\0=, !
if defined _#TMP if not "!_#TMP!" == ", " set _#OSEX1=!_#TMP!
)
set _#TMP=%_#Prd:*Terminal Server Edition=Found_%
if "%_#TMP:~0,6%" == "Found_" ( ::zur Vereinheitlichung: unter NT4 den Prd-TS-Eintrag nach ProductSuite verschieben
set _#Prd=%_#Prd: Terminal Server Edition=%
set _#OSEX1=Terminal Server Edition, %_#OSEX1%
)
set "_#OS_Info=%_#Prd%:%_#Ver% Build %_#Build%:%_#OSEX1%:%_#Lang%:%_#SP%:%_#Bit%" & set "_#OS_Info=!_#OS_Info:"=!"
if "%~1" == "" (
echo %_#OS_Info%
goto :LEB_FncWinVer_END
) else if "%~1" == "-s" (
endlocal & set "%~2=%_#OS_Info%" & exit /b %_#EL%
) else if not "%~1" == "-e" (
set _#EL=2 & goto :LEB_FncWinVer_END
)
set _#EL=1
:LOOP_FncWinVer_NextOS ::Option -e gefunden (es soll gestestet werden, ob das aktuelle Betriebssystem bestimmte Bedingungen erfuellt)
shift
set "_#InfoLST=%_#OS_Info%:#END#" & set "_#ParLST=%~1:#END#"
:LOOP_FncWinVer_NextDetail
set "_#InfoITM=%_#InfoLST%" &rem die OS-Info-Liste (z.B. "Windows XP Professional:5.1 Build 2600:...") auseinandernehmen...
set "_#InfoLST=%_#InfoLST:*:=%" &rem "*:=" loescht alles bis zum Aufkommen des ersten ":"-Zeichens; uebrig bleibt der rechte Teilstring
if not "%_#InfoITM%" == "%_#InfoLST%" (
set "_#InfoITM=!_#InfoITM::%_#InfoLST%=!" &rem InfoITM=erster Eintrag (entspricht urspruengliche Liste abzueglich rechtem Teilstring)
)
set "_#ParITM=%_#ParLST%" &rem Den Suchstring (z.B. "XP:::SP2:#END#") auseinandernehmen...
set "_#ParLST=%_#ParLST:*:=%" &rem "*:=" loescht alles bis zum Aufkommen des ersten ":"-Zeichens; uebrig bleibt der rechte Teilstring
if not "%_#ParITM%" == "%_#ParLST%" (
set "_#ParITM=!_#ParITM::%_#ParLST%=!" &rem ParITM=erster Eintrag (entspricht urspruengliche Liste abzueglich rechtem Teilstring)
)
if defined _#InfoITM if defined _#ParITM if not "%_#ParITM%" == "#END#" (
set "_#TMP=!_#InfoITM:*%_#ParITM%=Found_!" &rem das ist _wesentlich_ schneller als find.exe, ignoriert aber Gross-/Kleinschreibung
if "!_#TMP:~0,6!" == "Found_" ( ::gefunden; nun muss die Ueberpruefung noch einmal case-sensitiv durchgefueht werden...
echo "!_#InfoITM!" | find "!_#ParITM!" >NUL && set "_#EL=0" && rem "ParITM kommt in InfoITM vor" ist fuer dieses Item erfuellt
) else ( ::die erste Unstimmigkeit des Parameters wurde im aktuellen Item entdeckt
set "_#EL=1"
set "_#ParITM=#END#" &rem Weitersuchen nicht erforderlich; auf zum naechsten Parameter
)
)
if not "%_#ParITM%" == "#END#" if not "%_#InfoITM%" == "#END#" goto :LOOP_FncWinVer_NextDetail
if not "%~2" == "" if not "%_#EL%" == "0" goto LOOP_FncWinVer_NextOS
:LEB_FncWinVer_END
endlocal & exit /b %_#EL%
Alles anzeigen
so oder ähnlich kann mann es lösen