2011-09-08 20 views
2

我需要检测我的应用程序是否在Visual Studio IDE(2005,2008和2010)下运行。哪种方法可以检测我的应用程序是否从Visual Studio运行?

原因是我分发我的DLL的开发人员许可证,所以我需要检测DLL是否在VS下运行以检查许可证是否存在。

目前,我使用System.Diagnostics.Debugger.IsAttached属性并检查我的应用程序的父进程是否为devenv.exe。到目前为止,这工作正常。

我想知道如果这是正确的方式,或者我错过了什么

+3

我很好奇_why_你想这样做。在调试器中使应用程序行为不同听起来像是调试地狱的秘诀:-) – paxdiablo

+0

@paxdiablo,我用它来分发我的dll的开发人员许可证。所以我需要检测如果DLL在VS下运行,以检查许可证是否存在。 – Salvador

+0

好吧,足够公平,这听起来像一个足够的理由:-) – paxdiablo

回答

0

我见过MSDN的例子使用,我不知道任何其他方式来检查,所以我会说,你正在做的正确。

0

您可以在IDE中执行程序时提供一个命令行参数,类似于'-Debug'参数。

这可以通过工具栏的子菜单Project-> Properties-> Debug-> Start Options,然后输入-Debug或任何您想要的参数名称,然后在您的Main(string[] args)函数中检查它,最简单的方法是与“包含”功能:

static void Main(string[] args) 
{ 
    bool isDebugMode = args.Contains("-debug"); 
} 

但是,如果这仅仅是为了防止开发人员调用自己的程序无牌的DLL,他们可以通过从IDE外部启动可执行绕过系统,然后在执行检查步骤后附加调试器......在这种情况下,我会建议一个替代的许可路径。

+0

查看更新后的问题。虽然这个解决方案对于原始问题是可以的,但开发人员现在可以放弃'-debug'类型参数来绕过许可证检查。 – paxdiablo

+0

尝试检查常规许可证,如果它不存在,请检查开发人员许可证? – Zoey

相关问题