以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助】如何用代码判断系统是32位还是64位  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106243)

--  作者:lzzhx
--  发布时间:2017/9/5 11:57:00
--  [求助】如何用代码判断系统是32位还是64位
请教老师:如何用代码判断系统是32位还是64位
--  作者:有点甜
--  发布时间:2017/9/5 12:18:00
--  
 

Dim oConn As New System.Management.ConnectionOptions()
Dim oMs As New System.Management.ManagementScope("\\\\localhost", oConn)
Dim oQuery As New System.Management.ObjectQuery("select AddressWidth from Win32_Processor")
Dim oSearcher As New System.Management.ManagementObjectSearcher(oMs, oQuery)
Dim oReturnCollection = oSearcher.[Get]()
Dim addressWidth As String = Nothing

For Each oReturn As object In oReturnCollection
   
    addressWidth = oReturn("AddressWidth").ToString()
Next
msgbox(addressWidth)

 


--  作者:lzzhx
--  发布时间:2017/9/5 12:23:00
--  
出现错误

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


--  作者:lzzhx
--  发布时间:2017/9/5 12:26:00
--  
批处理中有个语句

if /i "%PROCESSOR_IDENTIFIER"~0,3%" =="X86"  goto X32

如何转成能在狐表中运行的代码?

--  作者:有点甜
--  发布时间:2017/9/5 12:40:00
--  

 升级到最新版foxtable,或者添加引用dll,system.Management.dll

[此贴子已经被作者于2017/9/5 14:33:31编辑过]

--  作者:lzzhx
--  发布时间:2017/9/5 13:05:00
--  
版本是2017-6-12
system.web.dll已经引用 ,还是同样的错误

--  作者:有点甜
--  发布时间:2017/9/5 14:35:00
--  

哦,要引用这个 system.Management.dll

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170905143532.png
图片点击可在新窗口打开查看

--  作者:lzzhx
--  发布时间:2017/9/5 16:25:00
--  
谢谢老师:我用批处理解决了,代码如下,目前好像是正常的,请老师看看代码有什么问题没有。

    Dim batfilenamepath As String = ProjectPath & "mydll\\MxDraw52\\"
    Dim qdq As String  = batfilenamepath.SubString(0,batfilenamepath.IndexOf("\\"))  \'bat文件所在目录的驱动器号
    Dim path As String = batfilenamepath.SubString(batfilenamepath.IndexOf("\\")+1,batfilenamepath.lastIndexOf("\\")-batfilenamepath.IndexOf("\\")-1)
    Dim dirstr As String = "cd\\" & vbcrlf & qdq & vbcrlf & "cd " & path & vbcrlf
    Dim p As String = "if /i " & """" & "%PROCESSOR_IDENTIFIER:~0,3%" & """" & " == " &  """" & "X86" & """" & " goto X32" & vbcrlf & "MxDrawX52x64.msi" & vbcrlf & "exit" & vbcrlf & ":X32" & vbcrlf & "MxDrawX52.msi" & vbcrlf & "exit"
    Dim bat As String = ""
    bat &= dirstr
    bat &= p   \'& """"
    FileSys.WriteAllText(batfilenamepath & "MxCAD.bat",bat,False,Encoding.Default)
    Dim Proc As New Process
    Proc.File = batfilenamepath & "MxCAD.bat"
    proc.WaitForClose = True
    Proc.Start()

--  作者:有点甜
--  发布时间:2017/9/5 16:33:00
--  
不明白你这样的意图。请参考2楼代码获取,根据不同的系统,调用不同的bat文件。尽量不要动态生成bat,这样很容易报毒。
--  作者:lzzhx
--  发布时间:2017/9/5 16:45:00
--  
我的目的是根据系统是32位还是64位,分别执行指定路径下的2个不同的mis文件,2楼的代码没有看明白