PDA

View Full Version : گفتگو: دریافت اطلاعات هارد دیسک



Mehr@ban
پنج شنبه 12 بهمن 1396, 17:35 عصر
سلام بر همه اساتید و رفقای گرامی
دهه فجر بر همه مبارک :قلب:

مدتی پیش یک ماژول جهت دریافت اطلاعات هارد دیسک پیدا کردم که مربوط به یک پروژه با vb6 بود
خود ماژول رو که میشد توی اکسس وارد کنم، ولی چون امکان ایمپورت فرم نبود دیگه دسترسی به نمونه کدها جهت نمایش اطلاعات پیدا نکردم و از ماژول هم چیزی سر در نیاوردم

ماژول رو به همراه یک فرم که از طریق فیلد کنترل سورس چندتا تکس باکس تونستم مقادیر این ماژول رو بدست بیارم رو نوشتم ولی با خطا مواجه میشه
اگر دوستان یه نگاهی بندازن و تکمیلش کنن ممنون میشم

البته اگر نمونه کاملتری دارن اینجا قرار بدن تا بقیه هم استفاده کنن:لبخند:

AbbasSediqi
جمعه 13 بهمن 1396, 01:31 صبح
با سلام

با استفاده از این فانکشن outpot رو از cmd دریافت کنید



Public Function ShellRun(sCmd As String) As String


'Run a shell command, returning the output as a string


Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")


'run command
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut


'handle the results as they are written to and read from the StdOut object
Dim s As String
Dim sLine As String
While Not oOutput.AtEndOfStream
sLine = oOutput.ReadLine
If sLine <> "" Then s = s & sLine & vbCrLf
Wend


ShellRun = s


End Function


با این دستور هم میتونید اطلاعات هارد رو بگیرید

با استفاده از cmd ویندوز

wmic diskdrive get serialnumber


خوب در لود فرم این دستورات رو وارد کنید


Dim res As String
res = ShellRun("wmic diskdrive get serialnumber")
MsgBox res


یا حق

AbbasSediqi
جمعه 13 بهمن 1396, 01:34 صبح
لیست اطلاعاتی رو که میتونید از wmic دریافت کنید

مثل cpu ، hdd , ....

اطلاعات wmic

در cmd تایپ کنید ?/ wmic

The following global switches are available:
/NAMESPACE Path for the namespace the alias operate against.
/ROLE Path for the role containing the alias definitions.
/NODE Servers the alias will operate against.
/IMPLEVEL Client impersonation level.
/AUTHLEVEL Client authentication level.
/LOCALE Language id the client should use.
/PRIVILEGES Enable or disable all privileges.
/TRACE Outputs debugging information to stderr.
/RECORD Logs all input commands and output.
/INTERACTIVE Sets or resets the interactive mode.
/FAILFAST Sets or resets the FailFast mode.
/USER User to be used during the session.
/PASSWORD Password to be used for session login.
/OUTPUT Specifies the mode for output redirection.
/APPEND Specifies the mode for output redirection.
/AGGREGATE Sets or resets aggregate mode.
/AUTHORITY Specifies the <authority type> for the connection.
/?[:<BRIEF|FULL>] Usage information.


For more information on a specific global switch, type: switch-name /?




The following alias/es are available in the current role:
ALIAS - Access to the aliases available on the local system
BASEBOARD - Base board (also known as a motherboard or system board) management.
BIOS - Basic input/output services (BIOS) management.
BOOTCONFIG - Boot configuration management.
CDROM - CD-ROM management.
COMPUTERSYSTEM - Computer system management.
CPU - CPU management.
CSPRODUCT - Computer system product information from SMBIOS.
DATAFILE - DataFile Management.
DCOMAPP - DCOM Application management.
DESKTOP - User's Desktop management.
DESKTOPMONITOR - Desktop Monitor management.
DEVICEMEMORYADDRESS - Device memory addresses management.
DISKDRIVE - Physical disk drive management.
DISKQUOTA - Disk space usage for NTFS volumes.
DMACHANNEL - Direct memory access (DMA) channel management.
ENVIRONMENT - System environment settings management.
FSDIR - Filesystem directory entry management.
GROUP - Group account management.
IDECONTROLLER - IDE Controller management.
IRQ - Interrupt request line (IRQ) management.
JOB - Provides access to the jobs scheduled using the schedule service.
LOADORDER - Management of system services that define execution dependencies.
LOGICALDISK - Local storage device management.
LOGON - LOGON Sessions.
MEMCACHE - Cache memory management.
MEMORYCHIP - Memory chip information.
MEMPHYSICAL - Computer system's physical memory management.
NETCLIENT - Network Client management.
NETLOGIN - Network login information (of a particular user) management.
NETPROTOCOL - Protocols (and their network characteristics) management.
NETUSE - Active network connection management.
NIC - Network Interface Controller (NIC) management.
NICCONFIG - Network adapter management.
NTDOMAIN - NT Domain management.
NTEVENT - Entries in the NT Event Log.
NTEVENTLOG - NT eventlog file management.
ONBOARDDEVICE - Management of common adapter devices built into the motherboard (system board).
OS - Installed Operating System/s management.
PAGEFILE - Virtual memory file swapping management.
PAGEFILESET - Page file settings management.
PARTITION - Management of partitioned areas of a physical disk.
PORT - I/O port management.
PORTCONNECTOR - Physical connection ports management.
PRINTER - Printer device management.
PRINTERCONFIG - Printer device configuration management.
PRINTJOB - Print job management.
PROCESS - Process management.
PRODUCT - Installation package task management.
QFE - Quick Fix Engineering.
QUOTASETTING - Setting information for disk quotas on a volume.
RDACCOUNT - Remote Desktop connection permission management.
RDNIC - Remote Desktop connection management on a specific network adapter.
RDPERMISSIONS - Permissions to a specific Remote Desktop connection.
RDTOGGLE - Turning Remote Desktop listener on or off remotely.
RECOVEROS - Information that will be gathered from memory when the operating system fails.
REGISTRY - Computer system registry management.
SCSICONTROLLER - SCSI Controller management.
SERVER - Server information management.
SERVICE - Service application management.
SHADOWCOPY - Shadow copy management.
SHADOWSTORAGE - Shadow copy storage area management.
SHARE - Shared resource management.
SOFTWAREELEMENT - Management of the elements of a software product installed on a system.
SOFTWAREFEATURE - Management of software product subsets of SoftwareElement.
SOUNDDEV - Sound Device management.
STARTUP - Management of commands that run automatically when users log onto the computer system.
SYSACCOUNT - System account management.
SYSDRIVER - Management of the system driver for a base service.
SYSTEMENCLOSURE - Physical system enclosure management.
SYSTEMSLOT - Management of physical connection points including ports, slots and peripherals, and proprietary connections points.
TAPEDRIVE - Tape drive management.
TEMPERATURE - Data management of a temperature sensor (electronic thermometer).
TIMEZONE - Time zone data management.
UPS - Uninterruptible power supply (UPS) management.
USERACCOUNT - User account management.
VOLTAGE - Voltage sensor (electronic voltmeter) data management.
VOLUME - Local storage volume management.
VOLUMEQUOTASETTING - Associates the disk quota setting with a specific disk volume.
VOLUMEUSERQUOTA - Per user storage volume quota management.
WMISET - WMI service operational parameters management.


For more information on a specific alias, type: alias /?


CLASS - Escapes to full WMI schema.
PATH - Escapes to full WMI object paths.
CONTEXT - Displays the state of all the global switches.
QUIT/EXIT - Exits the program.


For more information on CLASS/PATH/CONTEXT, type: (CLASS | PATH | CONTEXT) /?

AbbasSediqi
جمعه 13 بهمن 1396, 01:43 صبح
به طور مثال اگر دستور ؟/ wmic cpu GET در cmd وارد کنید بهتون نشون میده که چه اطلاعاتی رو میتونید دریافت کنید

مانند سریال یا شرکت سازنده و ...



لیست این اطلاعات


Property Type Operation
======== ==== =========
AddressWidth N/A N/A
Architecture N/A N/A
Availability N/A N/A
Caption N/A N/A
ConfigManagerErrorCode N/A N/A
ConfigManagerUserConfig N/A N/A
CpuStatus N/A N/A
CreationClassName N/A N/A
CurrentClockSpeed N/A N/A
CurrentVoltage N/A N/A
DataWidth N/A N/A
Description N/A N/A
DeviceID N/A N/A
ErrorCleared N/A N/A
ErrorDescription N/A N/A
ExtClock N/A N/A
Family N/A N/A
InstallDate N/A N/A
L2CacheSize N/A N/A
L2CacheSpeed N/A N/A
LastErrorCode N/A N/A
Level N/A N/A
LoadPercentage N/A N/A
Manufacturer N/A N/A
MaxClockSpeed N/A N/A
Name N/A N/A
OtherFamilyDescription N/A N/A
PNPDeviceID N/A N/A
PowerManagementCapabilities N/A N/A
PowerManagementSupported N/A N/A
ProcessorId N/A N/A
ProcessorType N/A N/A
Revision N/A N/A
Role N/A N/A
SocketDesignation N/A N/A
Status N/A N/A
StatusInfo N/A N/A
Stepping N/A N/A
SystemCreationClassName N/A N/A
SystemName N/A N/A
UniqueId N/A N/A
UpgradeMethod N/A N/A
Version N/A N/A
VoltageCaps N/A N/A

mazoolagh
یک شنبه 15 بهمن 1396, 10:45 صبح
مشکلی که من با متد exec دارم اینه که نمیدونم چجوری میشه بصورت hidden اجراش کرد.

در ضمن، اگر به تمام خروجی بصورت یک string نیاز باشه (نه بصورت خط به خط) کد رو میشه ساده تر کرد:

Dim s As String
s = oOutput.Readall

AbbasSediqi
دوشنبه 16 بهمن 1396, 02:35 صبح
مشکلی که من با متد exec دارم اینه که نمیدونم چجوری میشه بصورت hidden اجراش کرد.



با سلام
درمورد hidden اجرا شدن

از این فانکشن استفاده کنید



Public Function ShellRun(sCmd As String) As String
CreateObject("WScript.Shell").Run "cmd /c " & sCmd & " | clip", 0, True
ShellRun = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
End Function




این نمونه استفاده از فانکشن که در لود فرم قرار داره



MsgBox ShellRun("wmic diskdrive get serialnumber")


نمونه ضمیمه شد


در ضمن بابت این مضمون هم تشکر که تکمیل فرمودید






در ضمن، اگر به تمام خروجی بصورت یک string نیاز باشه (نه بصورت خط به خط) کد رو میشه ساده تر کرد:


Dim s As String
s = oOutput.Readall






یا حق

Mehr@ban
دوشنبه 16 بهمن 1396, 13:43 عصر
خوشحالم که تاپیک کاربردی شد!

در مورد مخفی شدن هم اگر یه توضیحی بدین ممنون میشم
که کاربردش چیه؟

mazoolagh
چهارشنبه 18 بهمن 1396, 13:25 عصر
Public Function ShellRun(sCmd As String) As String
CreateObject("WScript.Shell").Run "cmd /c " & sCmd & " | clip", 0, True
ShellRun = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
End Function




روش یا در واقع کلک جالبی بود - ممنون از پاسخگویی دقیق و عالی مثل همیشه

من تابحال خروجی رو به فایل ریدایرکت میکردم و بعد فایل رو میخوندم ، به فکرم نرسیده بود بجای فایل به کلیپ برد بفرستم و از کلیپ برد بخونم (البته بلد هم نبودم!)

mazoolagh
چهارشنبه 18 بهمن 1396, 13:29 عصر
خوشحالم که تاپیک کاربردی شد!

در مورد مخفی شدن هم اگر یه توضیحی بدین ممنون میشم
که کاربردش چیه؟

متد exec پنجره command رو بصورت نرمال باز میکنه و کنترلی روی اون نداریم که بسته به مدت زمان اجرای برنامه میتونه در حد چشمک زدن تا ثانیه ها و دقیقه ها طول بکشه که خوشایند نیست.

روش دوم که آقای صدیقی معرفی کردن این مشکل رو نداره

Mehr@ban
شنبه 11 فروردین 1397, 14:28 عصر
با سلام و تبریک ولادت مولا علی علیه السلام و سال جدید
برادر بزرگم جناب mazoolagh (http://barnamenevis.org/member.php?9893-mazoolagh) اشاره ای به نمایش اطلاعات دریافتی در یک خط داشتن که در ارسال 5# بهش اشاره کردن که به نوعی کد جناب صدیقی رو کامل میکرد.


مشکلی که من با متد exec دارم اینه که نمیدونم چجوری میشه بصورت hidden اجراش کرد.
در ضمن، اگر به تمام خروجی بصورت یک string نیاز باشه (نه بصورت خط به خط) کد رو میشه ساده تر کرد:

Dim s As String
s = oOutput.Readall


ولی در ادامه آقای صدیقی کدی رو ارائه کردن که موجب مخفی شدن پنجره cmd میشد
که در این کد نمیشد از کد بالا که برای نمایش یک خطی داده دریافتی استفاده کرد.

میشه کد زیر رو هم به نوعی اصلاح کنید تا بشه داده دریافتی رو در یک خط دریافت کرد در حالی که پنجره cmd مخفی هست؟

mazoolagh
شنبه 18 فروردین 1397, 11:26 صبح
سلام و سال نو شما هم مبارک

بدون هیچ مشکل میتونین از تابع دوم (که hidden اجرا میشه) استفاده کنین، چون در هر دو روش خروجی یکسان دریافت میکنین مستقل از اینکه خروجی دستور (که با scmd پاس میشه) یک یا چند خط باشه.

در واقع اینکه در روش نخست خروجی دستور رو یکجا یا خط به خط بخونین مطلقا تاثیری در خروجی تابع نداره و شما در هر صورت کل نتیجه رو بصورت یک استرینگ دریافت میکنین.

Mehr@ban
شنبه 18 فروردین 1397, 14:28 عصر
تشکر

ولی با این حال میشه من رو راهنمایی کنید؟
رشته ای که من دریافت کردم به این صورت هست:

SerialNumber

KWERJH96ISDFZ-1




دقیقا با همین تعداد فضای خالی و لاین خالی

حالا اگر من بخوام فقط رشته سریال که همون عبارت KWERJH9W_ISDFZ-1 رو داشته باشم تا بتونم تغییرات مورد نظرم رو انجام بدم، چه روشی رو پیشنهاد میکنید؟

mazoolagh
یک شنبه 19 فروردین 1397, 09:30 صبح
در واقع مشکل از این توابع نیست؛ خروجی دستور هست که کاراکتر carriage return اضافی داره (کد اسکی 13)

توابع رو بصورت زیر اصلاح کنین:

Public Function ShellRun(sCmd As String) As String
CreateObject("WScript.Shell").Run "cmd /c " & sCmd & " | clip", 0, True
ShellRun = Replace(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"), vbCr, "")
End Function

Public Function ShellRun2(sCmd As String) As String
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut
ShellRun2 = Replace(oOutput.readall, vbCr, "")
End Function

mazoolagh
یک شنبه 19 فروردین 1397, 09:48 صبح
خارج از موضوع:
برای تفسیر راحتتر نتایج بهتر هست که از سوییچ value استفاده کنین،

shellrun("wmic cpu get /value")



AddressWidth=64
Architecture=9
AssetTag=Fill By OEM
Availability=3
Caption=Intel64 Family 6 Model 60 Stepping 3
...
...
...

SB1398
دوشنبه 24 خرداد 1400, 23:52 عصر
در واقع مشکل از این توابع نیست؛ خروجی دستور هست که کاراکتر carriage return اضافی داره (کد اسکی 13)

توابع رو بصورت زیر اصلاح کنین:

Public Function ShellRun(sCmd As String) As String
CreateObject("WScript.Shell").Run "cmd /c " & sCmd & " | clip", 0, True
ShellRun = Replace(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"), vbCr, "")
End Function

Public Function ShellRun2(sCmd As String) As String
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut
ShellRun2 = Replace(oOutput.readall, vbCr, "")
End Function


سلام دوستان

من کماکان خروجی رو بصورت
SerialNumber
KWERJH96ISDFZ-1



دریافت میکنم ؛ در صورتیکه فقط میخوام عبارت KWERJH96ISDFZ-1 برگردانده شود ؛ لطفأ راهنمایی بفرمائید.

mazoolagh
سه شنبه 25 خرداد 1400, 11:44 صبح
سلام دوستان

من کماکان خروجی رو بصورت
SerialNumber
KWERJH96ISDFZ-1



دریافت میکنم ؛ در صورتیکه فقط میخوام عبارت KWERJH96ISDFZ-1 برگردانده شود ؛ لطفأ راهنمایی بفرمائید.

سلام و روز خوش
مدت زیادی از بحث گذشته و حضور ذهن ندارم
...
TIME...

mazoolagh
پنج شنبه 27 خرداد 1400, 08:20 صبح
خب،
یک راه این هست که با تابع replace عبارت serialnumber رو از خروجی بردارین.

ولی یک راه بهتر هم هست که این دست اطلاعات سیستمی رو مستقیما از wmi بگیریم.
برای این روش باید یک نمونه بسازم.
...
TIME...

mazoolagh
پنج شنبه 27 خرداد 1400, 13:32 عصر
تاپیک تکمیلی (https://barnamenevis.org/showthread.php?566216-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-(%D9%85%D8%A7%D9%86%D9%86%D8%AF-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-%D8%AF%DB%8C%D8%B3%DA%A9%D8%8C-)-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Windows-Management-Instrumentation&p=2443717#post2443717)

SB1398
پنج شنبه 27 خرداد 1400, 14:24 عصر
تاپیک تکمیلی (https://barnamenevis.org/showthread.php?566216-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-(%D9%85%D8%A7%D9%86%D9%86%D8%AF-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-%D8%AF%DB%8C%D8%B3%DA%A9%D8%8C-)-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Windows-Management-Instrumentation&p=2443717#post2443717)

عالی
سپاس از شما