Outlook PST文件管理工具

在日常工作中,经常需要管理Outlook的个人文件夹文件(PST)。有时,用户可能需要备份自己的PST文件,但往往因为不熟悉隐藏的AppData目录而遗漏了重要的文件。此外,PST文件的命名可能与Outlook中的文件夹名不一致,给文件管理带来困扰。更糟糕的是,一些用户仍在使用旧版的Outlook PST格式,这可能导致PST文件在接近满容时发生损坏。为了解决这些问题,开发了一款小工具,它可以回答以下问题:用户的用户名是什么?Outlook配置文件名称是什么?PST文件的路径和名称是什么?PST文件的版本(新/旧)是什么?在Outlook中显示为什么?PST文件的大小是多少?PST文件是何时创建的?此外,用户还可以将结果复制到剪贴板。

在更换用户的计算机时,需要记录每个用户正在使用的PST文件。这看起来是一个简单的任务,但需要研究数据存储的位置(注册表)以及如何以可读的格式提取这些数据。

使用代码

首先,需要读取注册表。以下是一个使用VB.NET读取注册表的示例代码:

Dim ProfilesRoot As String = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles" Dim DefaultProfileString As String = "DefaultProfile" Dim reg As RegistryKey = Nothing Try reg = Registry.CurrentUser.OpenSubKey(ProfilesRoot) Dim DefaultProfile_Name = reg.GetValue(DefaultProfileString, 0).ToString RichTextBox1.Text = "User Name: " & GetUserName() & vbCrLf RichTextBox1.Text = RichTextBox1.Text & "Default Outlook Profile Name: " & DefaultProfile_Name & vbCrLf & vbCrLf GetPSTsForProfile(DefaultProfile_Name) Catch ex As Exception ' Outlook Profile registry keys do not exist Me.Visible = True MessageBox.Show("This user does not have an Outlook profile", "", MessageBoxButtons.OK, MessageBoxIcon.Stop) Application.Exit() End Try

接下来,获取用户的名称:

Function GetUserName() As String If TypeOf My.User.CurrentPrincipal Is Security.Principal.WindowsPrincipal Then ' The application is using Windows authentication. ' The name format is DOMAIN\USERNAME. Dim parts() As String = Split(My.User.Name, "\") Dim username As String = parts(1) Return username Else ' The application is using custom authentication. Return My.User.Name End If End Function

获取PST文件的详细信息(参见完整源代码)。

在RichTextBox中添加文本颜色(数据输入后):

Dim Find As Integer Dim BeginHere As Integer = 0 Dim SLength As Integer BeginHere = 0 Dim SearchText1 As String = "User Name:" SLength = SearchText1.Length Do Find = RichTextBox1.Find(SearchText1, BeginHere, RichTextBoxFinds.MatchCase) If Find > -1 Then RichTextBox1.SelectionColor = Color.Blue BeginHere = BeginHere + SLength If BeginHere > Len(RichTextBox1.Text) Then Exit Do End If End If Loop While Find > -1 RichTextBox1.Select(Len(RichTextBox1.Text) + 1, 0) RichTextBox1.SelectionColor = Color.Black

将RichTextBox文本复制到剪贴板(通过按钮颜色闪烁显示数据已复制):

Clipboard.Clear() Clipboard.SetText(RichTextBox1.Text, TextDataFormat.Text) Button1.BackColor = Color.LightSalmon Me.Update() ' wait .5 second System.Threading.Thread.Sleep(500) Button1.BackColor = Color.Snow Me.Update()

注意事项

尽管可以引导用户使用Outlook,但无法强迫他们将所有PST文件保存在同一个目录下。开发这个工具的原因是,花费了大量时间修复Outlook PST文件,而这个工具可以帮助用户记录他们正在使用的PST文件。

文件完整性校验

在执行之前,请务必验证文件的完整性,或者重新编译以确保安全。以下是编译后的pst_info.exe应用程序的校验和:

  • MD5: 87afb53027064cf3b9f58b47d64bd4a2
  • SHA-1: fe13b256f1b94bd5fba3bcc6ca49630a2c6732f6
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485