用户schmoe_j是否可以运行将文件复制到schmoe_j无法写入的目录的应用程序?
发布于 2009-08-31 18:25:37
不,文件权限是由文件系统处理的,文件系统在系统中的级别比运行C#代码的级别低得多。C#代码不能直接绕过文件系统安全性。如果应用程序作为schmoe_j运行,它就不能写入schmoe_j没有写访问权限的磁盘上的位置。
一个例外情况是,如果schmoe_j具有备份和还原权限,在这种情况下,他可以写入磁盘上的任何位置。普通用户没有这个特权,因为授予它是一个非常危险的特权。
还有其他理论上的方法-例如,如果机器上有一个不安全的服务,标准用户可以说服它写入磁盘上的任意位置。任何这样的情况都是一个应该修复的安全漏洞。
发布于 2009-08-31 18:26:50
您可以在可执行文件中包含清单,以请求以更高的权限运行应用程序。
参见Adding a UAC Manifest to Managed Code。
发布于 2009-08-31 18:26:52
我认为通常的处理方式是使用一个服务(或服务应用程序),该服务(或服务应用程序)在提升的权限下运行,但具有非常小的外围应用程序区域,并且没有GUI。用户与在较低权限下运行的应用程序进行交互,这将完成用户帐户可以做的事情-将文件放在dropoff文件夹中,写入数据库等。
https://stackoverflow.com/questions/1358700
复制相似问题