程序

时间:2015-12-31 14:27:58

标签: vb.net

我正在尝试删除C:\ Windows \ temp中的文件夹。 但我得到访问被拒绝错误,以管理员身份运行程序。

我使用的语法:

 Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\Temp\"
                System.IO.Directory.Delete(path, True)

尝试在Impersonation下运行语法,任何想法我如何实现这一点。根目录c:\ i上的文件夹能够删除。 还尝试使用'requireAdministrator'添加app.manifest文件。

2 个答案:

答案 0 :(得分:2)

Microsoft已对有关删除SPECIALFOLDER规范下的文件和文件夹的权限进行了一些修改。我认为这是由于较旧的安全问题。

只有在管理APP作为管理员和其他人(甚至是管理员)时,您才能删除其中的一部分。

答案 1 :(得分:1)

您可能希望在删除文件夹之前先尝试清除临时文件。您也可以使用内置的Windows进程..完成后尝试删除该文件夹。

    Dim p As New Process()
    p.StartInfo.FileName = "RunDll32.exe"
    p.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 8"
    p.StartInfo.CreateNoWindow = True
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    p.Start()
    Dim p1 As New Process()
    p1.StartInfo.FileName = "RunDll32.exe"
    p1.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 2"
    p1.StartInfo.CreateNoWindow = True
    p1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    p1.Start()
    'Clear Temp Files
    'Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 "
    'Clear Cookies
    'Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2"
    'Clear History
    'Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1"
    'Clear Form data
    'Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16"
    'Clear Svaed Passwords
    'Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32"