【发布时间】:2017-06-23 18:52:07
【问题描述】:
我正在尝试以编程方式在 c# 中从 System32 或 SysWOW64 目录移动一个 dll 文件。我正在使用以下代码:
string path32 = "c:/windows/System32/";
string path64 = "c:/windows/SysWOW64/";
string fileName = "mydll.dll";
string[] paths = { path32, path64 };
foreach (string p in paths)
{
if (int.Parse(year) == 1)
{
DirectoryInfo d = new DirectoryInfo(p);
FileInfo[] infos = d.GetFiles(fileName);
foreach (FileInfo f in infos)
{
// Do the renaming here
File.Move(f.FullName, Path.Combine(f.DirectoryName, "1" + f.Name));
}
}
}
我在 WCF 服务的特定条件下使用此方法。当我在本地环境中执行此操作时,它运行良好。但是当我在不同的机器上运行时,它会抛出以下错误:
服务器在处理请求时遇到错误。请参阅 服务帮助页面,用于构建对服务的有效请求。这 异常消息是“拒绝访问路径。”。查看服务器日志 更多细节。异常堆栈跟踪是:
在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.File.InternalMove(字符串源文件名,字符串 destFileName,布尔检查主机) 在 SyncInvokeCalculateFestivaldate(Object , Object[] , Object[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,Object[] 输入,Object[]& 输出)在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
如何在 c# 中授予访问权限,以便重命名和移动 dll 文件?
【问题讨论】:
-
进程在第二台机器上运行的用户是否有目录和文件的权限?
-
@MORCHARD 我猜,不是。那么如何以编程方式获取权限呢?
-
负面投票评论员,我可以知道为什么这会得到负面投票。我知道有一些类似的问题,但它与另一个不同,我无法解决仅在此处提出的问题。
-
System32/SysWow64 不是你的文件系统的一部分——它们是系统。 您的应用程序不应该在其中删除任何内容,因为它本来就不应该在其中放置任何内容。