2011-08-04 72 views
1

我使用的是動作腳本3.0編譯代碼硬盤序列號閃爍10如何獲得與動作腳本

如何獲得硬盤序列號與動作腳本?

我想獲得此信息沒有任何安全要求。有沒有辦法做到這一點?

+2

我認爲AS3是waaaaaaaay太高級這種東西... – BoltClock

+1

與ActionScript + AIR和訪問一些NAT ive函數,這將是可能的...否則我不知道如何......你有什麼嘗試?你有沒有收到錯誤信息? – Yahia

+0

使用AIR,我沒有試過...... – okami

回答

1

從FlashPlayer無法做到這一點。您可能會要求用戶在第一次手動輸入時,請使用SharedObject並且不要再詢問。

隨着AIR您可以派生本地操作系統進程和傳達它來獲取硬盤序列號:

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
var file:File = File.applicationDirectory.resolvePath("some_hdd_utility.exe"); 
nativeProcessStartupInfo.executable = file; 
var processArgs:Vector.<String> = new Vector.<String>(); 
processArgs.push("someArgs"); 
nativeProcessStartupInfo.arguments = processArgs; 
process = new NativeProcess(); 
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
process.start(nativeProcessStartupInfo); 
public function onOutputData(event:ProgressEvent):void 
{ 
    var stdOut:ByteArray = process.standardOutput; 
    var data:String = stdOut.readUTFBytes(process.standardOutput.bytesAvailable); 
    trace("Got: ", data); 
} 

希望這有助於。

5

您可以從C#控制檯應用程序獲取設備的所有物理介質,並將每個物理介質及其屬性輸出爲xml。然後在使用NativeApplication API的Air應用程序中,您可以獲取所述物理介質及其屬性,即硬盤驅動器的序列號。我做了這樣一個例子:

GetPhysicalMedia.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 
using System.Management; 

namespace GetPhysicalMedia 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ManagementClass managementClass = new ManagementClass("Win32_PhysicalMedia"); 

      String physicalMediaXml = ""; 

      physicalMediaXml += "<physicalMedia>\n"; 

      foreach (ManagementObject managementObject in managementClass.GetInstances()) 
      { 
       physicalMediaXml += "\t<physicalMedium "; 
       physicalMediaXml += "caption" + "='" + managementObject["Caption"] + "' "; 
       physicalMediaXml += "description" + "='" + managementObject["Description"] + "' "; 
       physicalMediaXml += "installDate" + "='" + managementObject["InstallDate"] + "' "; 
       physicalMediaXml += "name" + "='" + managementObject["Name"] + "' "; 
       physicalMediaXml += "status" + "='" + managementObject["Status"] + "' "; 
       physicalMediaXml += "creationClassName" + "='" + managementObject["CreationClassName"] + "' "; 
       physicalMediaXml += "manufacturer" + "='" + managementObject["Manufacturer"] + "' "; 
       physicalMediaXml += "model" + "='" + managementObject["Model"] + "' "; 
       physicalMediaXml += "sku" + "='" + managementObject["SKU"] + "' "; 
       physicalMediaXml += "serialNumber" + "='" + managementObject["SerialNumber"] + "' "; 
       physicalMediaXml += "tag" + "='" + Regex.Replace((String)managementObject["Tag"], "\\\\", "&#92;") +"' "; 
       physicalMediaXml += "version" + "='" + managementObject["Version"] + "' "; 
       physicalMediaXml += "partNumber" + "='" + managementObject["PartNumber"] + "' "; 
       physicalMediaXml += "otherIdentifyingInfo" + "='" + managementObject["OtherIdentifyingInfo"] + "' "; 
       physicalMediaXml += "poweredOn" + "='" + managementObject["PoweredOn"] + "' "; 
       physicalMediaXml += "removable" + "='" + managementObject["Removable"] + "' "; 
       physicalMediaXml += "replaceable" + "='" + managementObject["Replaceable"] + "' "; 
       physicalMediaXml += "hotSwappable" + "='" + managementObject["HotSwappable"] + "' "; 
       physicalMediaXml += "capacity" + "='" + managementObject["Capacity"] + "' "; 
       physicalMediaXml += "mediaType" + "='" + managementObject["MediaType"] + "' "; 
       physicalMediaXml += "mediaDescription" + "='" + managementObject["MediaDescription"] + "' "; 
       physicalMediaXml += "writeProtectOn" + "='" + managementObject["WriteProtectOn"] + "' "; 
       physicalMediaXml += "cleanerMedia" + "='" + managementObject["CleanerMedia"] + "' "; 
       physicalMediaXml += "/>\n"; 

      }// end foreach 

      physicalMediaXml += "</physicalMedia>\n"; 

      Console.WriteLine(physicalMediaXml); 

     }// end method 

    }// end class 

}// end namespace 

Main.as:

package 
{ 
    import flash.desktop.NativeProcess; 
    import flash.desktop.NativeProcessStartupInfo; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.ProgressEvent; 
    import flash.filesystem.File; 

    public class Main extends Sprite 
    { 
     private var _nativeProcess:NativeProcess; 
     private var _nativeProcessSUI:NativeProcessStartupInfo; 
     private var _physicalMedia:XML; 

     public function Main():void 
     { 
      _nativeProcess = new NativeProcess(); 
      _nativeProcessSUI = new NativeProcessStartupInfo(); 

      _nativeProcessSUI.executable = File.applicationDirectory.resolvePath("GetPhysicalMedia.exe"); 
      _nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onNativeProcessSOD); 
      _nativeProcess.addEventListener(Event.STANDARD_OUTPUT_CLOSE, onNativeProcessSOC); 
      _nativeProcess.start(_nativeProcessSUI); 

     }// end function 

     private function onNativeProcessSOD(e:ProgressEvent):void 
     { 
      _physicalMedia = XML(_nativeProcess.standardOutput.readUTFBytes(_nativeProcess.standardOutput.bytesAvailable)); 

     }// end function 

     private function onNativeProcessSOC(e:Event):void 
     { 
      trace(_physicalMedia.physicalMedium.(String(@tag).search("PHYSICALDRIVE0") > -1)[email protected]); // output: V5FEVZ2W 
      trace(_physicalMedia.physicalMedium.(String(@tag).search("PHYSICALDRIVE1") > -1)[email protected]); // output: WD-WCASU2856512 

     }// end function 

    }// end class 

}// end package 

這是你得到GetPhysicalMedia.exe輸出的一個例子:

<physicalMedia> 
    <physicalMedium caption="" description="" installDate="" name="" status="" creationClassName="" manufacturer="" model="" sku="" serialNumber="V5FEVZ2W   " tag="\\.\PHYSICALDRIVE0" version="" partNumber="" otherIdentifyingInfo="" poweredOn="" removable="" replaceable="" hotSwappable="" capacity="" mediaType="" mediaDescription="" writeProtectOn="" cleanerMedia=""/> 
    <physicalMedium caption="" description="" installDate="" name="" status="" creationClassName="" manufacturer="" model="" sku="" serialNumber="WD-WCASU2856512  " tag="\\.\PHYSICALDRIVE1" version="" partNumber="" otherIdentifyingInfo="" poweredOn="" removable="" replaceable="" hotSwappable="" capacity="" mediaType="" mediaDescription="" writeProtectOn="" cleanerMedia=""/> 
    <physicalMedium caption="" description="" installDate="" name="" status="" creationClassName="" manufacturer="" model="" sku="" serialNumber="516256L411   " tag="\\.\CDROM0" version="" partNumber="" otherIdentifyingInfo="" poweredOn="" removable="" replaceable="" hotSwappable="" capacity="" mediaType="" mediaDescription="" writeProtectOn="" cleanerMedia=""/> 
</physicalMedia>