Articles of c + +

Windows客户端应用程序的login对话框

有一个Win32函数,我可以打电话来显示Windowslogin对话框? 例如,Internet Explorer和Visual Studio的团队资源pipe理器在访问网站时都显示凭证对话框 – 如何显示该对话框? 我有一个.NET Windows客户端应用程序,在与Web服务进行通信时使用login的Windows用户标识。 服务使用该用户标识来确定谁在调用服务并决定他们有权查看的内容。 我想添加一个命令,允许当前用户有效地做一个“运行”,他们可以input另一个用户的用户名/密码,我们有应用程序作为他们。 我可以build立一个自定义的对话框并使用LoginUser()函数,但我宁愿使用“官方”的东西。

与命令行应用程序进行交互的最佳方式

我需要为与命令行应用程序紧密交互的应用程序编写一个组件。 命令行应用程序询问一系列问题,执行一些计算,然后终止(我需要检测)。 基本上,我想在包装类中包装这个交互。 有没有人在过去取得类似的成绩? 如果是的话,你是怎么做到的? 你有没有注意到一个模式,或者可以在类中使用一些好的构build? 干杯!

如何唯一标识C#中的USB密钥?

我希望能够检测何时插入USB钥匙。 此外,如果我能区分USB钥匙A和USB钥匙B,那么我的形状就更好了。 最后,如果我可以使用某种硬件序列号,MAC地址或任何其他的唯一标识密钥,那么我是最好的形状。 基本上我正在使用USB钥匙作为硬件encryption狗来“解锁”我的C#应用​​程序。

如何在WinForm应用程序的文本框中显示特定的数据库条目

更新:谢谢大家,代码是不是问题,虽然关于SQL注入的信息是有用的,我的问题是,我使用的数据库的旧版本没有相应的产品ID,所以它是使用第一个产品它可以find。 感觉非常愚蠢,但感谢您的build议。 我目前有以下代码: SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\v11.0 AttachDbFilename=C:\Users\h8005267\Desktop\Practical Project\Build\System4\System\StockControl.mdf;Integrated Security=True;Connect Timeout=30"); connection.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM Product WHERE ProductID='" + textBox3.Text + "'", connection); SqlDataReader re = cmd.ExecuteReader(); if (re.Read()) { textBox4.Text = re["ProductTitle"].ToString(); // only fills using first product in table textBox5.Text = re["ProductPublisherArtist"].ToString(); comboBox1.Text = re["ProductType"].ToString(); textBox6.Text = […]

如何避免在Windows上释放模式下的“program.exe已停止工作”窗口?

我正在Visual Studio 2010上开发C ++中的软件。由于这个软件应该在没有人工交互的服务器上运行,所以我确实需要摆脱这个“program.exe已经停止工作”窗口在发布错误的情况下popup。 我只是想要程序终止(也许也给出了一个错误信息,但不一定),并没有阻止等待某人点击“closures程序”button。 我不得不提,我的机器上有64位Windows 7专业版。 我已经阅读了几件事情,比如: _set_abort_behaviorfunction。 这解决了调用abort()时的情况,但对于“vector下标超出范围”等错误则不是这种情况。 我知道我可以通过做exception处理来解决这些错误,但并不是所有的错误都是exception,因此这并不能解决我的整个问题。 我也读了一些关于Dr.Watsondebugging器的内容,这个debugging器应该是静静地终止应用程序,但是我觉得这个debugging器不适用于Windows 7.另外我不知道这个debugging器是否可以解决我的问题在发布模式… 我没有发现,禁用我的整个机器上的错误报告是一个优雅的select,虽然我读了这也可以是一个替代品(不是我想要的)。 我怎样才能在Visual Studio中做到这一点? 有什么设置我可以使用? 有没有办法在Visual Studio中打开exception中的所有错误,以便我可以用exception处理机制解决问题? (如果这是一个愚蠢的问题,请容忍) 我期待着你的build议。 非常感谢您的时间! 最好的问候,科妮莉亚

如何获取C / C ++中的磁盘驱动器序列号

这已经被回答了,但是它是一个C#解决scheme。 如何在C或C ++中执行此操作?

如何根据设备实例ID可靠快速地获取网卡的MAC地址

给定一个网卡的设备实例ID ,我想知道它的MAC地址。 集成英特尔千兆位卡的系统示例设备实例ID: PCI\VEN_8086&DEV_10CC&SUBSYS_00008086&REV_00\3&33FD14CA&0&C8 到目前为止,我使用的algorithm如下所示: 用DIGCF_DEVICEINTERFACE调用DIGCF_DEVICEINTERFACE 。 调用SetupDiEnumDeviceInfo来获取SP_DEVINFO_DATA的返回设备。 使用GUID_NDIS_LAN_CLASS调用SetupDiEnumDeviceInterfaces以获取设备接口。 为此返回的设备接口调用SetupDiGetDeviceInterfaceDetail 。 这将得到设备path为string: \\?\pci#ven_8086&dev_10cc&subsys_00008086&rev_00#3&33fd14ca&0&c8#{ad498944-762f-11d0-8dcb-00c04fc3358c}\{28fd5409-15bd-4c06-b62f-004d3a06f852} 在这一点上,我们有一个地址到网卡驱动程序的界面。 使用#4的结果使用CreateFile打开它。 使用IOCTL_NDIS_QUERY_GLOBAL_STATS和OID_802_3_PERMANENT_ADDRESS调用DeviceIoControl以获取MAC地址。 这通常起作用,并且已经在相当多的机器上成功使用。 但是,看起来只有less数机器具有networking驱动程序,它们在步骤#6中没有正确响应DeviceIoControl请求; 即使将网卡驱动程序更新到最新,问题仍然存在。 这些更新,基于Windows 7的计算机。 具体来说, DeviceIoControl成功完成,但返回零字节,而不是包含MAC地址的预期的六个字节。 一个线索似乎在IOCTL_NDIS_QUERY_GLOBAL_STATS的MSDN页面上: 此IOCTL将在以后的操作系统版本中被弃用。 您应该使用WMI接口来查询微型端口驱动程序信息。 有关更多信息,请参阅NDIS对WMI的支持。 – 也许更新的网卡驱动程序不再实现这个IOCTL? 那么,我应该如何做到这一点? 是否有可能在我的方法中有一个疏忽,我正在做一些微小的错误? 还是我需要采取更多不同的方法? 一些替代方法似乎包括: 查询Win32_NetworkAdapter WMI类:提供所需的信息,但由于可怕的性能而被拒绝。 请参阅Win32_NetworkAdapter WMI类的快速replace以获取本地计算机的MAC地址 查询MSNdis_EthernetPermanentAddress WMI类:看起来是IOCTL_NDIS_QUERY_GLOBAL_STATS的WMIreplace,并直接从驱动程序查询OID – 这个工作在麻烦的networking驱动程序上。 不幸的是,返回的类实例只提供MAC地址和InstanceName ,这是一个本地化的string,如Intel(R) 82567LM-2 Gigabit Network Connection 。 查询MSNdis_EnumerateAdapter生成一个将InstanceName关联到DeviceName的列表,如\DEVICE\{28FD5409-15BD-4C06-B62F-004D3A06F852} 。 我不知道如何从DeviceName转到即插即用设备实例ID( PCI\VEN_8086…… )。 调用GetAdaptersAddresses或GetAdaptersInfo (不build议使用)。 […]

Win32 C ++控制台清除屏幕不闪烁

我见过一些控制台游戏,屏幕刷新/清除本身没有恼人的闪烁。 我已经尝试了很多解决scheme,下面是我现在得到的: while(true) { if(screenChanged) //if something needs to be drawn on new position { COORD coordScreen = { 0, 0 }; DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsole, &csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten); GetConsoleScreenBufferInfo(hConsole, &csbi); FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten); SetConsoleCursorPosition(hConsole, coordScreen); } […]

如何在C ++中创build一个不可删除的registry项(或文件)

我想创build一个时间限制版本的游戏,我正在用C ++进行开发。 我已经遇到了一些创build文件的程序,我仍然无法删除,而其他创build的registry项很难删除(因为有多个子键需要先更深入地修改主机,删除它,更改主人…)。 那么我认为唯一的办法就是在计算机上创造一些不是(或者几乎不可删除)的标记开始试用的东西。 我知道如何创build密钥或文件,但不知道如何保护它们。 谢谢。

以用户身份运行我的程序

Windows 7,Vista,Server 2008,UAC已激活 程序必须用pipe理员权限进行说明才能进行一些安装操作。 之后,我希望我的程序继续使用非pipe理员权限。 我怎样才能重新启动它没有pipe理权限? PS 我的程序重新安装。 我不想分发任何额外的程序。 所以我的步骤是: 在临时目录中下载新版本 在pipe理员权限下重新启动 重命名旧的exe文件,并从临时目录复制新的exe文件 在非pipe理员权限下重新启动