10

私は現在、Windows アンインストーラーですべてのユーザーに対して「設定の削除」を実装していますが、解決できるかどうかさえわからない問題に遭遇しました。

アプリケーションは、CredentialManager ( ) を使用して、現在のユーザーの資格情報エントリを保存しますkeymgr.dll。資格情報のターゲットを「X」と呼びましょう。アンインストール時に、ターゲット「X」に保存されているすべての資格情報をすべてのユーザーから削除する必要があります。もちろん、アンインストーラーには管理者権限が必要ですが、それでもこれを達成するのは非常に難しいと思います。

現在のユーザーの場合、そのコマンドは通常cmdkey /delete=:X、コマンド プロンプトから解決されます。私の知るcmdkey.exe /list限り、現在のユーザーのエントリを一覧表示するのに役立つだけで、別のユーザーからローカル エントリを削除することはできません。

資格情報はフォルダーの下に OS ファイルとして保存されていることを知りましC:\Users\_user_\AppData\Local\Microsoft\Credentialsたが、削除したいエントリがどのファイルであるかがわからず、すべてを削除すると他のアプリケーションにとって危険です。また、OS ファイルの削除は危険であり、制限 (追加の UAC プロンプト?) もあると思います。

Runasコマンドは私が得た最も近いショットですが、ユーザーのパスワードが必要なため、非常に難しくなり、アンインストーラーで必要なものではなくなります。また、各ユーザーのユーザー名とドメインを取得して反復する方法も必要です。

cmdどちらかまたはこれを使用することをお勧めしますpowershell

4

4 に答える 4

0

同様の問題が発生し、ドメインに参加していないデバイスの古い資格情報が消去されました。資格情報をクリアするためのログオン タスクを作成しました。私の場合、特定のファイル サーバーを探していたので、誤ってすべての資格情報をクリアしないようにしました。文字列式をタスクにパイプするときの構文の問題のため、タスクで参照するよりも参照 .ps1 を作成する方が簡単でした。このスクリプトを Intune 経由でプッシュしました....

# Full path of the file
$file = 'C:\script\clearcreds.ps1'
    
#If the file does not exist, create it.
if (-not(Test-Path -Path $file -PathType Leaf)) {
try {
$null = New-Item -Path "C:\ProgramData\CentraStage\Packages" -Name 
"clearcreds.ps1" -ItemType "file" -Value 'cmdkey /list | ForEach-Object{if($_ - 
         like "*Target:*" -and $_ -like "*fileserver*"){cmdkey /del:($_ -replace " ","" -replace "Target:","")}}'
Write-Host "The file [$file] has been created."
             }
         catch {
             throw $_.Exception.Message
         }
     }
#######################################
#Create ScheduledTask to Run at log on.
#######################################
$schtaskName = "Clear Cached Creds "
$schtaskDescription = "Clears Cached Creds for each user at logon."
$trigger = New-ScheduledTaskTrigger -AtLogOn
$class = cimclass MSFT_TaskEventTrigger root/Microsoft/Windows/TaskScheduler
#Execute task in users context
$principal = New-ScheduledTaskPrincipal -GroupId "S-1-5-32-545" -Id "Author"
$action3 = New-ScheduledTaskAction -Execute 'Powershell.exe' "-File C:\script\clearcreds.ps1"
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$null=Register-ScheduledTask -TaskName $schtaskName -Trigger $trigger -Action   $action3  -Principal $principal -Settings $settings -Description 
$schtaskDescription -Force
Start-ScheduledTask -TaskName $schtaskName
于 2022-01-27T18:42:06.837 に答える