草庐IT

同一年

全部标签

windows - 调用 ImpersonateSelf() 是否会取消对同一线程所做的所有安全 token 调整?

我不明白ImpersonateSelf().假设我的代码在某个主机进程中运行。该主机进程创建了一个新线程并调整了线程安全性,以便线程具有最小权限,现在新线程执行我的代码。我的代码调用ImpersonateSelf(SecurityImpersonation);会有什么影响?它会重置为该线程所做的所有权限调整吗? 最佳答案 是的。它复制进程token并将其分配为当前线程的模拟token。旧token的特权无关紧要,因为线程不再使用该token。如果要合并权限,请使用GetTokenInformation获取旧权限并自己复制和分配模拟t

c# - 有没有办法让多个程序在windows上订阅同一个多播组?

我有两个应用程序需要订阅同一个多播组/端口组合。目前,我能处理这个问题的唯一方法是构建一个订阅多播组的代理应用程序,并通过单独的TCP连接将接收到的流量转发到每个应用程序。我想摆脱代理应用程序并让每个应用程序自己订阅多播组,但我收到套接字异常“通常只允许每个套接字地址使用一次”。有什么办法解决这个问题吗?为什么每台计算机只允许订阅一个给定的多播组? 最佳答案 不完全确定它是否被允许,但在这里寻找可能的解决方案:SendingandreceivingUDPpacketsbetweentwoprogramsonthesamecomput

windows - 调用 "set"后,Cmake "find_path"对同一变量不起作用

在Cmake模块中,我试图找到不同的路径。在某些情况下,我想在最初使用相同变量调用“find_path”后“设置”一个变量:#generalsearchforthisincludedirfind_path(LIBRARY_INCLUDE_DIRNAMESLibraryName/LibraryHeader.h)#specificoptionenabledbyuserif(USE_OTHER_LIB)find_path(OTHER_LIB_ROOT_DIRNAMESOtherLib/OtherLib.h)set(LIBRARY_INCLUDE_DIR${OTHER_LIB_ROOT_DIR

c# - 将大括号与单行 "if"语句的语句放在同一行是否是一种错误的形式?

所以我知道总是在if、for等中包含花括号被认为是一种很好的做法,即使如果只有一个后续语句它们是可选的,因为它更容易不小心做类似的事情:if(something==true)DoSomething();DoSomethingElse();如果不放大括号,快速编辑代码时。但是像这样的事情呢:if(something==true){DoSomething();}这样你仍然会占用更少的行(IMO提高了可读性)但仍然不太可能从上面不小心犯错误?我问是因为我不相信我以前见过这种风格的if或循环,但我确实看到它用于C#属性中的getter和setter,例如:publicstringName{ge

c# - 从一个对象到同一实体类型的两个对象的多个关联

我正在尝试使用代码优先和流畅的API创建一个对象,该对象包含来自同一个表的两个不同实体。换句话说,传输对象持有对两个不同jar对象的引用——一个是源,另一个是目的地。但是,当我使用以下代码时,出现异常,指出“引用关系将导致不允许的循环引用。”modelBuilder.Entity().HasRequired(t=>t.Source).WithMany(t=>t.OutboundTransfers);modelBuilder.Entity().HasRequired(t=>t.Destination).WithMany(t=>t.InboundTransfers);我最好的猜测是它认为我

c# - 我可以在由 XSD C# 生成的类创建的 XML 中的同一标记处拥有 null 属性和其他属性吗?

我有一堆C#类,它们是从XSD自动生成的。然后我根据那些C#类生成XML文件。到目前为止没有任何东西存在。问题:生成的XML文件正在接受验证,验证需要所有带有xsi:nil="true"的XML标签的额外属性。.基本上标签应该是这样的:,但我无法在C#中实现。我的代码是:if(myObject.TestTag.HasValue){t.testTag01=newtestTag01();t.testTag01.Value=myObject.TestTag.Value;}//else//{//t.testTag01=newtestTag01();//t.testTag01.NV="12312

c# - 为什么 File.Move 允许 2 个线程同时移动同一个文件?

我们目前有一个应用程序可以监视文件夹中的新文件。为了使其容错并能够一次处理更多文件,我们希望能够在不同机器上运行该应用程序的多个实例。我们使用File.Move来“锁定”一个文件,并确保一次只有一个线程可以处理一个文件。为了测试只有一个应用程序和/或线程可以对文件执行File.Move,我创建了一个简单的应用程序(基于原始应用程序的代码),每个应用程序创建10个线程并监视一个文件夹,当每个线程检测到一个新文件时,它对其执行File.Move并更改文件的扩展名,以尝试阻止其他线程执行相同的操作。我在运行此应用程序的多个副本(并且它自己运行)时看到一个问题,其中2个线程(在同一应用程序或不

c# - 传递依赖导致同一 DLL 的版本冲突

.NET世界中管理导致版本冲突的传递依赖项的最佳实践是什么?详情:项目A依赖于项目B,而项目B又依赖于库C还有项目A还依赖于项目X,后者依赖于库C的不同且(可能)不兼容的版本。A->B->Cv1.0&A->X->Cv2.0其中Cv1.0Cv2.0有没有办法让它工作?可以不使用GAC来完成吗?即使B和X只是二进制格式(无法访问源代码)也能做到吗?换句话说,有没有一种方法可以让项目B和X在项目A中一起使用时各自使用它们自己的依赖项,而不会引起冲突。注意:我意识到理想情况下我根本不应该遇到这个问题,但随着对外部库的依赖不断扩大,这将是一个不可避免的副作用。所以我想知道应该如何最好地处理它。

C# UWP - 无法在同一解决方案中添加对项目的引用

我需要为我需要使用的API实用程序编写一个UI。我为UI创建了一个新的通用Windows应用程序,将API实用程序项目添加到解决方案中,现在需要从UWP项目引用API实用程序-但我只是得到“无法添加对项目‘XXX’的引用”。如果我创建Windows窗体应用程序或控制台项目并将其添加到解决方案中,我可以进行引用,没有问题。UWP有什么我不明白的? 最佳答案 在您尝试引用的项目中,确保TargetFrameworks绰号不包含.NETCore或.NETFramework.用鼠标右键单击您要引用的项目。编辑项目文件找到删除不需要的目标。对

c# - 如何在执行期间暂停、保存状态并稍后从同一点继续?

我有一个线程正在做一些处理。我希望能够在执行期间停止该线程,以某种方式保存它的位置(以及它正在操作的对象的状态),然后在以后的日期(所以在我的计算机重新启动之后)从那个位置继续。在C#中这是不可能的,对吧?如果不是,实现此功能的正确设计是什么?所以我最初的愿望是拥有类似的东西classFoo:Task{voidoverrideExecute(){//exampletaskwhile(someCondition){...dostuff...}}}并且能够在该函数内的任何时候暂停/保存。当功能结束时,每个人都知道它已经完成。作为替代方案,也许这是更好的方法classFoo:Task{voi