Flash 如何使用操作脚本获取硬盘序列号

Flash 如何使用操作脚本获取硬盘序列号,flash,actionscript-3,hard-drive,serial-number,Flash,Actionscript 3,Hard Drive,Serial Number,我正在使用ActionScript3.0将代码编译成Flash10 如何使用动作脚本获取硬盘序列号 我想在没有任何安全要求的情况下获取此信息。有办法吗?FlashPlayer没有办法做到这一点。您可能会要求用户第一次手动键入,使用SharedObject,然后再也不要求 使用AIR,您可以分叉本机操作系统进程并与之通信,以获得HDD序列号: var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStart

我正在使用ActionScript3.0将代码编译成Flash10

如何使用动作脚本获取硬盘序列号


我想在没有任何安全要求的情况下获取此信息。有办法吗?

FlashPlayer没有办法做到这一点。您可能会要求用户第一次手动键入,使用
SharedObject
,然后再也不要求

使用AIR,您可以分叉本机操作系统进程并与之通信,以获得HDD序列号:

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);  
}
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
var file:file=file.applicationDirectory.resolvePath(“some_hdd_utility.exe”);
nativeProcessStartupInfo.executable=文件;
变量processArgs:Vector.=新向量();
processArgs.push(“someArgs”);
nativeProcessStartupInfo.arguments=processArgs;
进程=新的NativeProcess();
process.addEventListener(ProgressEvent.STANDARD_输出数据,onOutputData);
进程启动(nativeProcessStartupInfo);
公共函数onOutputData(事件:ProgressEvent):无效
{  
var stdOut:ByteArray=process.standardOutput;
变量数据:String=stdOut.readUTFBytes(process.standardOutput.bytesAvailable);
跟踪(“获取:”,数据);
}

希望这能有所帮助。

FlashPlayer无法做到这一点。您可能会要求用户第一次手动键入,使用
SharedObject
,然后再也不要求

使用AIR,您可以分叉本机操作系统进程并与之通信,以获得HDD序列号:

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);  
}
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
var file:file=file.applicationDirectory.resolvePath(“some_hdd_utility.exe”);
nativeProcessStartupInfo.executable=文件;
变量processArgs:Vector.=新向量();
processArgs.push(“someArgs”);
nativeProcessStartupInfo.arguments=processArgs;
进程=新的NativeProcess();
process.addEventListener(ProgressEvent.STANDARD_输出数据,onOutputData);
进程启动(nativeProcessStartupInfo);
公共函数onOutputData(事件:ProgressEvent):无效
{  
var stdOut:ByteArray=process.standardOutput;
变量数据:String=stdOut.readUTFBytes(process.standardOutput.bytesAvailable);
跟踪(“获取:”,数据);
}

希望这有帮助。

您可以从C#console应用程序获取设备的所有物理介质,并将每个物理介质及其属性输出为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
以下是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>

您可以从C#console应用程序获取设备的所有物理介质,并将每个物理介质及其属性输出为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
以下是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>


我认为AS3对于这类东西来说太高了……使用ActionScript+AIR和访问一些本机函数,这是可能的。。。否则我看不出怎么。。。你试过什么?你收到eny错误消息了吗?@okami我认为你无法从网络浏览器中获取硬盘序列号。从功能和实现的角度来看,这个想法听起来很邪恶,没有一种web技术可以访问这些数据。@okami获取硬盘序列号的目的是什么。我认为AS3对于这类东西来说太高了……使用ActionScript+AIR和访问一些本机功能,这是可能的。。。否则我看不出怎么。。。你试过什么?你收到eny错误消息了吗?@okami我认为你无法从网络浏览器中获取硬盘序列号。从功能的角度来看,这个想法听起来很邪恶,从实现的角度来看,没有一种web技术可以访问这些数据。@okami获取hdd序列号的目的是什么。