Articles of .net

沙盒AppDomain中的线程安全性

我有一个应用程序域来托pipe不受信任的代码/程序集。 我用安全属性解决了所有安全问题,效果很好。 不受信任的代码在专用线程上运行。 CLR是2.0。 这就是我AppDomainShell AppDomainSeed ,壳牌运行在主域,种子是信任的代理/助手在不受信任的域。 我有兴趣限制创build新线程和改变优先级 。 目前我的不受信任的程序集可以通过创build10k个线程来设置ThreadPriority.Highest或终止操作系统。 有SecurityPermissionFlag.ControlThread,但可以防止像Abort()这样的高级操作。 我在看Thread类的实现,对于那些简单的操作,C#API没有声明性的安全性,其余的实现是本地的。 我想我可以使用一些Win32函数来禁止在操作系统级别。 但是操作系统如何识别不可信任的线程/代码/程序集呢? SetThreadPrincipal() ? 有什么CLR的API可以被滥用? 我更喜欢解决scheme,而不需要安装和便携式单声道: – / hmmm。 任何其他的想法欢迎。 谢谢!

In-Proc SxS在托pipe代码中打开shell扩展?

该build议曾经是“不要在托pipe代码中编写进程中的shell扩展”。 但是对于.NET Framework 4和并行进程,应该解决在托pipe代码中编写shell扩展的主要原因。 就这样说,我有三个问题。 现在可以在托pipe代码中编写shell扩展了吗? 如果在托pipe代码中编写shell扩展可能存在哪些问题? 在非托pipe代码中编写shell扩展的原因是什么?

如何以编程方式更改默认的audioinput设备

我正在寻找一种方法来设置/更改我的应用程序内的默认input设备。 我有几个不同的录音设备,进入控制面板并更改默认录音设备非常烦人。 我环顾四周,我没有find任何可以帮助我解决问题的方法。 应用程序是用C#编写的,它是针对Windows Vista / Windows 7的。

DotNet核心安装失败

当我的Windows 10笔记本电脑(DotNetCore.1.0.0.RC2-VS2015Tools.Preview1)上安装DotNet核心时,运行包安装失败。 我从安装日志文件中发现了一些错误信息: 网页开发者工具信息: [037C:1EC0][2016-06-19T11:07:26]e000: Error 0x80070643: Failed to install MSI package. [037C:1EC0][2016-06-19T11:07:26]e000: Error 0x80070643: Failed to execute MSI package. [2E70:3228][2016-06-19T11:07:26]e000: Error 0x80070643: Failed to configure per-machine MSI package. [2E70:3228][2016-06-19T11:07:26]i319: Applied execute package: WebToolsExtensionsVS14, result: 0x80070643, restart: None [2E70:3228][2016-06-19T11:07:26]e000: Error 0x80070643: Failed to execute MSI package. [037C:1EC0][2016-06-19T11:07:26]i318: Skipped rollback of package: WebToolsExtensionsVS14, action: Uninstall, already: […]

是否有可能知道哪个应用程序创build了一个文件?

Windows(或一般的NTFS)是否存储在任何地方创build文件的应用程序的名称? 或者是有一个确定哪个应用程序负责创build一个文件(几秒钟后),它是最初创build后的强大方式? 我们正在制定一个文件pipe理系统。 它使用FileSystemWatcher监视FS的新文件 – 这一部分很简单 – 但我希望能够跟踪哪个应用程序/版本创build了它检测到的新文件。 我知道我可以查找属于正在运行的进程的打开的文件句柄,但想必这种方法只会在应用程序创build文件后才能工作,然后保持locking,对吗? 有没有更好的办法?

如何用命令行压缩指定的文件夹

你能告诉我如何将指定的文件压缩到相同的Zip文件。 让我告诉我的文件夹是如何填充的: 任务调度程序对我的数据库进行备份并每天将其保存到文件中。 它每天创build4个数据库备份,这意味着每天将有4个以上的文件。 因此,我需要将新创build的备份压缩到同一个zip文件(当然,它与前一天的压缩文件不同,将为新创build的备份文件创build该压缩文件),我需要自动完成。 那么我知道如何使它自动。 我可以使用Windows任务调度器来自动化事情。 谢谢。

System.data.OracleClient使用七位64位操作系统上的32位oracle客户端驱动程序

我有一个Web应用程序从asp.net 1.1(VS 2003)迁移到Asp.net 2(VS 2008)。 在新版本上执行Oracle连接时遇到问题。 开发环境是64位七。 当与所有的CPU生成应用程序时,我有System.Data.OracleClient上的一个问题,exceptionSystem.BadImageFormatException:暂定de chargement d'un program de格式不正确。 (exception德HRESULT:0x8007000B)。 。 我生成的x86 CPU上,我有这个错误开始: [BadImageFormatException:不可能使用'Fimier'组装'CpimWebApplication'或其他方式。 暂定格式不正确。] System.Reflection.Assembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)+0 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,证据assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection)+416 System.Reflection.Assembly.InternalLoad(String assemblyString,证据assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection)+166 System.Reflection.Assembly.Load(String assemblyString)+35 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,布尔星指令)+190 有什么问题 ? 机器上的Oracle客户端是32位版本。 我在网上读过,它不可能利用32位Oracle客户端System.data.OracleClient? 安装64位Oracle客户端是解决scheme吗? TIA的问候

CustomSettingProvider中的空引用仅在某些机器上

我使用的CustomSettingProvider可以在这里find: http : //www.codeproject.com/KB/vb/CustomSettingsProvider.aspx 在某些机器上,会引发空引用exception: System.NullReferenceException: . bij cx.a(SettingsPropertyValue A_0) bij cx.a(SettingsContext A_0, SettingsPropertyValueCollection A_1) bij System.Configuration.SettingsBase.SaveCore() bij System.Configuration.SettingsBase.Save() bij System.Configuration.ApplicationSettingsBase.Save() cx.a()是getvalue或setvalue方法.. 有任何想法吗 ? ………..编辑…………………………. 此GetValue方法返回XPathException:expression式在执行时必须计算为节点集(SelectSingleNode方法) private string GetValue(SettingsProperty setting) { string ret = ""; if (setting == null) return ""; try { //Try to read setting ?? XmlNode foundNode = null; string nodeSelectStr = […]

我可以在Windows上加载一个32位DLL到64位进程吗?

我最近升级了ac#windows服务作为64位.net进程运行。 通常情况下,这将是微不足道的,但系统使用C ++编写的32位DLL。 这不是一个select将此DLL转换为64位,所以我将DLL包装在一个单独的32位.net进程,并通过远程处理暴露.net接口。 这是一个相当可靠的解决scheme,但是我宁愿将系统作为单个进程运行。 有什么办法可以加载我的32位DLL到64位进程,并直接访问它(也许通过某种thunking层)?

Ruby可以导入一个.NET DLL吗?

我有兴趣在一个项目中使用/学习RoR,我必须使用.NET DLL。 Ruby能够导入.NET DLL吗?