首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenNETCF进程ID混淆

OpenNETCF进程ID混淆
EN

Stack Overflow用户
提问于 2015-02-02 22:05:35
回答 1查看 311关注 0票数 0

我在一个OpenNETCF CompactFramework3.5移动设备应用程序中使用了.NET 2.3。在程序启动时,我正在寻找我的应用程序的重复运行实例。我很困惑为什么我从各种方法获得的当前ProcessID似乎有一半时间是不正确的。

代码语言:javascript
复制
Public Shared Sub Main()
    Dim appName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name & ".exe"
    Dim intCurrentProcessId As Integer = OpenNETCF.Diagnostics.ProcessHelper.GetCurrentProcessID
    'Dim intCurrentProcessId As Integer = Process.GetCurrentProcess.Id()

    For Each p As ToolHelp.ProcessEntry In ToolHelp.ProcessEntry.GetProcesses
        If p.ProcessID <> intCurrentProcessId AndAlso p.ExeFile.Contains(appName) Then
            MessageBox.Show("KILLING p.ExeFile: " & p.ExeFile & " p.processid: " & p.ProcessID & " intCurrentProcessId: " & intCurrentProcessId)
            'p.Kill()
        End If
    Next
End Sub

为什么intCurrentProcessId看起来不与p.ProcessId随机匹配,而是一个负数?

我的代表太低了,不能发布显示p.ProcessID = 3459667490和intCurrentProcessID = -835299806的截图。

请理解,对于单个实例的替代测试方法,我不感兴趣。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 21:26:00

首先,快速查看签名数字和无符号数字(请随意使用桌面上的计算器来验证这些数字)。

3459667490在无符号十进制是0xCE365622中的32位十六进制.

-835299806在数字小数是0xCE365622在32位十六进制.

看到相似性了吗?

如果你这样做,无论是签名或无签名,我愿意打赌,100%的时间ID将匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28287674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档