我想让应用程序从指定的工作中删除目标文件。执行软件的用户将是目标机器上的管理员,因此我使用以下代码进行测试:
string strTarget = @"\\" + textBox1.Text + @"\C$\Temp\temp.txt";
try
{
File.Delete(strTarget);
}
catch (Exception ex)
{
MessageBox.Show("Failure to delete: " + ex.Message);
}
然后我在自己的工作站和另一台测试机器上创建了一个\ Temp \ Temp.txt文件。我是两台机器上的管理员,可以通过相关的UNC路径手动访问和删除文件。当我运行代码调试器时,不会抛出任何异常,但文件不会删除。我无法想象我们发生了什么事情都没有失败。
我可以查看任何内容或我需要添加的代码吗?我已经对其他问题进行了搜索,但我还没有找到答案。
答案 0 :(得分:1)
如果你在Vista / 7下运行,你的程序可能正在非升级的priveleges下运行。确保以管理员身份明确运行程序,或在项目的清单文件中指定它:
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!--
UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
</requestedPrivileges>