AccessRightType について教えてください への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 KOZ  (社会人)
投稿日時
2024/12/21 04:29:53
Type.IsPublic って、そのクラスが Public で宣言されているかどうかなので、アクセス権にはなんら関係ないと思いますが・・・
フォルダなのに、New FileInfo( ターゲットフォルダ ) というのも変ですね。
以下のような感じで確認できます。
フォルダなのに、New FileInfo( ターゲットフォルダ ) というのも変ですね。
以下のような感じで確認できます。
Imports System.IO
Imports System.Security.AccessControl
Imports System.Security.Principal
Module Module1
Sub Main()
Dim folderPath As String = "xxxxxxxxxx" ' フォルダパスを指定
Dim account As String = "BUILTIN\Users"
Dim directorySecurity As DirectorySecurity = Directory.GetAccessControl(folderPath)
Dim authorizationRules As AuthorizationRuleCollection = directorySecurity.GetAccessRules(True, True, GetType(NTAccount))
Dim usersGroupHasAccess As Boolean = False
For Each rule As FileSystemAccessRule In authorizationRules
Console.WriteLine($"{rule.IdentityReference}:{rule.FileSystemRights}")
If rule.IdentityReference.Value.Equals(account, StringComparison.CurrentCultureIgnoreCase) Then
If rule.FileSystemRights.HasFlag(FileSystemRights.Read) Then
usersGroupHasAccess = True
Exit For
End If
End If
Next
If usersGroupHasAccess Then
Console.WriteLine("フォルダに 'Users' グループのアクセス権があります。")
Else
Console.WriteLine("フォルダに 'Users' グループのアクセス権がありません。")
End If
End Sub
End Module
投稿者 N88-Basic  (社会人)
投稿日時
2024/12/20 15:58:40
Visual Studio 2022 + Basic + Windows 11 にてファイルのコピーを行うプログラムを作っています。
今までは、全く問題なく動作していたのですが、「system.unauthorizedAcessException パス ”C:¥user\xxx\Documets\My Music" というメッセージが出力され継続ができません。
この掲示板でも、同じようなじれが紹介されていましたがうまく動作しませんでした。NET で検索した結果以下のような処理を追加しました。
一応、スキップすることができました。
ただ、C# では結構な説明があるのですが、Basic 用は見つかっておりません。
無知は承知で、以下のコード内の AccessRightType.IsPublic で Users グループにアクセス権があるか判断できるものでしょうか?
情報をお持ちでしたらご教授ください(実際のユーザは Adoministrators に属しています)
ーー以下 テストコードーー
Dim fileInfo As New FileInfo( ターゲットフォルダ )
Dim fileSec As FileSecurity = fileInfo.GetAccessControl()
If fileSec.AccessRightType.IsPublic = False Then
’ 使用不可?のためにスキップする
End If
以上、よろしくお願いします。
今までは、全く問題なく動作していたのですが、「system.unauthorizedAcessException パス ”C:¥user\xxx\Documets\My Music" というメッセージが出力され継続ができません。
この掲示板でも、同じようなじれが紹介されていましたがうまく動作しませんでした。NET で検索した結果以下のような処理を追加しました。
一応、スキップすることができました。
ただ、C# では結構な説明があるのですが、Basic 用は見つかっておりません。
無知は承知で、以下のコード内の AccessRightType.IsPublic で Users グループにアクセス権があるか判断できるものでしょうか?
情報をお持ちでしたらご教授ください(実際のユーザは Adoministrators に属しています)
ーー以下 テストコードーー
Dim fileInfo As New FileInfo( ターゲットフォルダ )
Dim fileSec As FileSecurity = fileInfo.GetAccessControl()
If fileSec.AccessRightType.IsPublic = False Then
’ 使用不可?のためにスキップする
End If
以上、よろしくお願いします。
おかげさまで、ご紹介いただいたコードで無事エラーを回避できました。
初めは、BUILTIN\Users の意味が分からず、ユーザー名(ローカルアカウント)などを指定していたのですがうまくいかず、変更せずに行うとうまくいきました。
ただ、別のマシンでは、BUILTIN\Administrators とする必要がありました(状況がわかりませんが、Windows 11 がインストール済みの PC をセットアップしてローカルアカウントに切り替えたり、OneDrive フォルダーを回避したかもしれません。
以上、今後ともよろしくお願いいたします。