我正在我的应用程序中实现一个"锁定"系统,以保护我的应用程序免遭非法复制和使用.系统检查基于硬件的代码的签名,并期望使用仅由我公司拥有的私钥进行签名.(该应用程序已获得公钥来验证签名.)
我想确保没有人在应用程序中更改我的锁定机制,所以我想签署我的应用程序的程序集,我认为这是有道理的.
这个很奇怪:
我的应用程序工作正常,但突然该死的ListView控件的事件不再被引发.它只是来来去去,没有任何明确的理由.(显然)我已将AllowDrop属性设置为True并处理DragEnter,DragOver和DragDrop事件,如下所示:
Private Sub lstApplications_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lstApplications.DragDrop, Me.DragDrop
m_fileNames = CType(e.Data.GetData(DataFormats.FileDrop), String())
mnuType.Show(Cursor.Position, ToolStripDropDownDirection.BelowLeft)
End Sub
Private Sub lstApplications_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lstApplications.DragEnter, Me.DragEnter, lstApplications.DragOver, Me.DragOver
If chkMode.Checked OrElse Not e.Data.GetDataPresent(DataFormats.FileDrop, True) Then
e.Effect = DragDropEffects.None
Else
e.Effect = DragDropEffects.Copy
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我在这两个方法中编写的代码无关紧要,因为没有引发任何事件.这里有什么我想念的吗?
我在另一台机器上运行相同的应用程序,它工作正常.然后我重新启动了自己的机器,一切都开始了.我不确定,但似乎Windows出了问题.
我曾经在寻找获取硬盘序列号而不使用WMI,我找到了它.我在StackOverFlow.com上找到并发布的代码在32位Windows(XP和Vista)上运行良好.只有当我尝试在64位操作系统(特别是Vista Ultimate 64)上获取序列号时才会出现问题.代码一直返回String.Empty或Space.
任何人都知道如何解决这个问题?
编辑:
我使用了Dave Cluderay建议的工具,结果很有趣:
这是来自DiskId32的输出,在Windows XP SP2 32位上:
To get all details use "diskid32 /d"
Trying to read the drive IDs using physical access with admin rights
Drive 0 - Primary Controller - - Master drive
Drive Model Number________________: [MAXTOR STM3160215AS]
Drive Serial Number_______________: [ 6RA26XK3]
Drive Controller Revision Number__: [3.AAD]
Controller Buffer Size on Drive___: 2097152 bytes
Drive Type________________________: Fixed
Drive Size________________________: 160041885696 bytes
Trying to read the drive IDs using the SCSI back …Run Code Online (Sandbox Code Playgroud) 在尝试连接到SQL Server 2005时,似乎SQL Management Studio Express 2005不考虑为LAN定义的Internet选项代理设置.
有没有办法让它使用代理设置?
考虑这些简单的类。它们属于具有领域驱动设计 (DDD) 原则的简单应用程序,因此每个 Entity 和 ValueObject 通过构造函数接收其属性值,同时隐藏默认的无参数构造函数。属性也将是只读的。
public class MyClass
{
public Guid Id {get;}
public ValueObject ValueObject1 {get;}
public ValueObject ValueObject2 {get;}
public MyClass(ValueObject valueObject1, ValueObject valueObject2)
{
ValueObject1 = valueObject1;
ValueObject2 = valueObject2;
}
private MyClass(){}
}
public class ValueObject
{
public string Value {get;}
public ValueObject(string value)
{
Value = value;
}
private ValueObject(){}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用 EntityFramework Core 2.2.6 基于此模型创建数据库。
显然,EF Core 2.2.6 可以通过它们的参数化构造函数自动为这些类提供属性值,只要构造函数参数和类属性具有相同的名称(不区分大小写)。伟大的。
现在我希望 ValueObjects 与 MyClass 存储在同一个表中。要做到这一点,有人告诉我,我应该用modelBuilder.OwnsOne<>在OnModelCreating对的DbContext的,而不是modelBuilder.Property<>
中的 DBContext 配置 …
c# entity domain-driven-design value-objects entity-framework-core
我正在为我的软件实现锁定和复制保护系统.我已经关闭了每一个允许有人打破锁定的洞(嗯,这有点过于乐观,我知道!)但最后一件事就是这样:
我听说破解者可以像我使用的API一样改变像Kernel32.dll这样的Windows DLL,返回一个由破解者指定的值.我需要阻止这一点.
起初我以为我可以为我使用的每个DLL创建一个哈希值,并根据客户端DLL的计算哈希检查该哈希,以查看该文件是否已更改.这不起作用,因为对于不同版本的Windows有许多不同版本的DLL,并且Microsoft提供的每个修补程序和Service Pack都可以更改该文件.
然后我意识到我可以检查文件的签名,以确保它具有有效的Microsoft签名.现在有两个问题:
任何演练都非常感谢.我的应用程序是使用Visual Basic.NET编写的.
多谢你们.
我需要压缩和修复Access 2007 .accdb数据库文件.我知道JRO.JetEngine可以使用.mdb文件执行此操作,但我需要通过代码修复较新的版本2007格式.
有什么建议?
编辑:
事情就是这样:我发现我可以使用COM对象库"Microsoft Office 12 Access数据库引擎对象库"并使用DBEngine类并调用其CompactDatabse方法.但似乎没有地方可以提供数据库密码; 好像Office 12数据库引擎在任何地方都没有任何文档.我找到了旧版本的CompactDatabase方法的一些文档,但这些文档根本没有帮助我.
这真让我抓狂.
我和其中一个客户使用我的软件时遇到了死胡同.在我们销售的产品的约40份(使用VB.NET 2005在.NET 2.0中编程的应用程序)中,大约2份没有响应,1核心的双核CPU停留在100%(程序仅使用1核心)
最合乎逻辑的猜测是导致这种行为的无限循环,但是数千行代码具有许多循环.这就是我得到的所有信息; 现在,您如何建议我调试此问题?
编辑:基本上,该软件负责计算使用其他设备(如PC等)所花费的信用额度.它是一个Cybercafe管理程序,并且间歇性地失败,即它在失败时减去信用.它还在后台执行其他操作,例如检查是否是创建数据库备份的时间等.
编辑:解决了.这是最不可能的问题.我用作DBMS的Access数据库引擎实际上是我的应用程序中存在问题的部分.在其中一个表中使用一排JUST ONE FRIGGIN ROW很困难.我无法删除它,或以其他方式在任何其他表中添加与该行相关的记录; 当我尝试使用该行时,即使MS Access 2007也会导致CPU达到100%!
一个简单的"紧凑和修复"命令修复了一切.我想每次我的应用程序启动时都会发出该命令.这样可以防止再次发生这种情况.
感谢WinDbg,我可以找到问题所在.我建议大家学习如何使用它,因为它可以节省时间.
我需要将图表放在Excel工作表的中心,就在用户当前正在查看的位置。显然,0是图纸坐标系统X轴的起点,随着我们向右移动,X会增加。例如,用户可能正在查看列J到Z,并且我需要用户在工作表中查看位置的坐标,因此我可以将图表放在他的前面。
如何获得工作表“视口”相对于工作表坐标系的坐标?还有其他更简单的方法可以将图表放置在那里吗?
谢谢。
有谁知道,为什么以下代码在某些机器上返回不同的结果?
Private Shared Function ComputeHashValue(ByVal Data As String) As String
Dim HashAlgorithm As SHA512 = SHA512.Create
Dim HashValue() As Byte = HashAlgorithm.ComputeHash(Encoding.ASCII.GetBytes(Data))
' Looping over the array and ANDing each byte with 0111111
For i As Integer = 0 To HashValue.Length - 1
HashValue(i) = HashValue(i) And Convert.ToByte(127)
Next
Return Encoding.ASCII.GetString(HashValue)
End Function
Private Shared Function AreByteArraysEqual(ByVal array1 As Byte(), ByVal array2 As Byte()) As Boolean
If array1.Length <> array2.Length Then Return False
For i As Integer = 0 To …Run Code Online (Sandbox Code Playgroud) 将新行添加到表时,我使用以下SQL脚本启用字段中的当前时间设置:
ALTER TABLE [Items] ADD CONSTRAINT DF_Items DEFAULT GETDATE() FOR [CreationDate]
Run Code Online (Sandbox Code Playgroud)
现在我使用Entity Framework来处理这个表,并向其中添加新行.我想要做的是允许特定列从SQL Server本身接收其值,而不必自己提供值.Nothing在Visual Basic中将该特定列的值设置为填充字段DateTime.MinValue,这不是我想要的(顺便说一句,SQL Server不支持).
我需要做些什么改变才能做到这一点?