これが私がこれまでに思いついた最良の方法です。それで、英語以外のWindowsがインストールされている人がこれをチェックしてくれたら幸いです。
(簡潔にするために、疑似コードのみを投稿しています。)
1-以下のすべての手順は、ローカルサービスアプリケーションから実行されます。
2-すべてのユーザープロファイルへのパスを取得するには、キー内のサブフォルダーを列挙し、それらから値HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
を読み取りProfileImagePath
ます。各ユーザーアカウントのプロファイルパスを提供します。
3-デスクトップのフォルダー名を取得するには、サービスアプリからキーからDesktop
値を読み取りHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
ます(はい、HKCUは奇妙に聞こえますが、うまくいきました)。その後、%USERPROFILE%
環境変数を使用して、環境変数のパスを取得します。 API。したがって、次のような2つのパスが得られます。
C:\Windows\system32\config\systemprofile\Desktop
と
C:\Windows\system32\config\systemprofile
次に、大文字と小文字を区別しない比較を使用して、2番目の文字列を1番目の文字列から分離すると、デスクトップのフォルダ名(この場合は「\ Desktop」)が取得されます。
4-デスクトップフォルダを手順2で取得したパスに追加して、そのユーザーのデスクトップフォルダへのフルパスを作成します。