Показать полную графическую версию : [решено] Определить серийный номер устройства с которого запущен скрипт.
Centrinar
09-04-2011, 22:44
Собственно как определить серийник если устройство может быть как и флешка так и HDD ну и т.д. Спасибо!
Что подразумевается под «серийный номер устройства»? WMI, класс «Win32_LogicalDisk», свойство «VolumeSerialNumber», оно же «DriveGetSerial ()»?!
Centrinar
10-04-2011, 02:08
DriveGetSeria
madmasles
10-04-2011, 05:35
Centrinar,
#include <WinAPIEx.au3>
$sProcess = 'notepad.exe'
Run('notepad.exe', '', @SW_MINIMIZE)
Sleep(1000)
$PID = ProcessExists($sProcess)
If $PID Then
$sPath = _WinAPI_GetProcessFileName($PID)
$sDrive = _WinAPI_PathStripToRoot($sPath)
$sSerial = DriveGetSerial($sDrive)
MsgBox(64, 'Info', 'Процесс: ' & $sProcess & @LF & 'Путь: ' & $sPath & @LF & 'Диск: ' & _
$sDrive & @LF & '№: Диска ' & $sDrive & ' = ' & $sSerial)
ProcessClose($sProcess)
EndIf
WinAPIEx.au3 (http://autoit-script.ru/index.php?topic=47.0)
Centrinar, MsgBox(0, 'Это что ли?', DriveGetSerial(StringLeft(@ScriptDir, 2)))
#include <file.au3>
AutoItSetOption("MustDeclareVars", 1)
Local $sDrive, $sDir, $sFName, $sExt
_PathSplit(@ScriptFullPath, $sDrive, $sDir, $sFName, $sExt)
ConsoleWrite(Hex(Number(DriveGetSerial($sDrive))) & @CRLF)
Local $oFSO = ObjCreate("Scripting.FileSystemObject")
ConsoleWrite(Hex($oFSO.GetDrive($oFSO.GetDriveName(@ScriptFullPath)).SerialNumber) & @CRLF)
$oFSO = 0
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
ConsoleWrite($oSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_LogicalDisk.DeviceID='" & $sDrive & "'").VolumeSerialNumber & @CRLF)
$oSWbemLocator = 0
Можно просто hex сделать MsgBox(0, 'Это что ли?', Hex(DriveGetSerial(StringLeft(@ScriptDir, 2))))
Centrinar
10-04-2011, 14:20
Для не знающих, что значит HEX
Перевод числа в строку в шестнадцатеричной системе счисления.
Hex
Returns a string representation of an integer or of a binary type converted to hexadecimal.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.