現在のユーザー以外のユーザーのレジストリ値を変更または編集する方法はありますか? 私はその他のユーザーの資格情報を知っています。他のユーザーのレジストリキーを編集する
答えて
ユーザーを偽装して、その現在のコンテキストのレジストリを変更することができます。ここではC#と偽装上のリソースのカップルです:
何がやりたいことは、このような何か(擬似)である:
using(var impersonation = new Impersonate(username,password))
{
ChangeRegistry(keys, values);
}
そして、偽装が取り消された場合は、実行中のユーザーを再び使用して戻ります。 Here is an example implementationは、前述の疑似実例のように動作するIDisposableとhere is another exampleを実装する偽装クラスです。レジストリ値を変更する方法について
var registry = Registry.CurrentUser;
var key =
registry.OpenSubKey(
@"HKEY_CURRENT_USER\Some\Path\That\You\Want\ToChange", true);
key.SetValue(null, "");
Registry.CurrentUser.Flush();
更新
ですから、HKCU
にアクセスするために何をする必要があるかあなたはまた、ユーザープロファイルをロードする必要があるということです。これは、LoadUserProfile
と呼ばれる別のWin32メソッドを呼び出すことによって行われます。あなたが使用できるcomplete example hereがありますが、ここで重要なビットを含めるつもりです。
まず、あなたがこのようなWin32の方法含める必要があります。あなたは次のことを行う必要があり、ブロックを使用して、偽装インサイド
[DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LoadUserProfile(IntPtr hToken,
ref ProfileInfo lpProfileInfo);
[DllImport("userenv.dll", CallingConvention = CallingConvention.Winapi,
SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool UnloadUserProfile(IntPtr hToken,
IntPtr lpProfileInfo);
を:
ProfileInfo profileInfo = new ProfileInfo();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.lpUserName = userName;
profileInfo.dwFlags = 1;
Boolean loadSuccess = LoadUserProfile(tokenDuplicate, ref profileInfo);
そして、この後に次のことができるようにすべきですHKCU
にアクセスしてください。完了したら、UnloadUserProfile(tokenDuplicate, profileInfo.hProfile);
を使用してプロファイルをアンロードする必要があります。
2つのオプションがあります。 Filip Ekbergの方が優れていることが証明されている場合は、そのユーザーを偽装することができます。または
HKCUは、HKEY_USERS
のキーのいずれかのシンボリックリンクに過ぎません。そのユーザーのSIDを知っていれば、そのユーザーのSIDを見つけることができます。
var account = new NTAccount("userName");
var identifier = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
var sid = identifier.Value;
より良いオプションは、偽装することです。 2番目のオプションは、ユーザーの資格情報がわからない場合にはより効果的です。欠点は、他人のアカウントに書き込むために管理者権限が必要になることです。
偽装は機能しませんでしたが、sidは便利ですが、UACがオフで、私は管理者ですが、権限のないアクセス例外が発生しました。 –
@MSS、アクセス権の昇格を試みてください。 –
それは働いた、私の間違いは私が読書の鍵を開いたことだった!間違い: var key = Registry.Users.OpenSubKey(sid);権利は:var key = Registry.Users.OpenSubKey(sid。true); !!! –
- 1. 他のユーザーのSharedPreferencesを編集する
- 2. 他のユーザーのExchangeアポイントの編集
- 3. 編集クラス - 他のユーザーのレジストリ
- 4. TFSでプロジェクトの他のユーザーのアラートを編集する
- 5. 特定のユーザーのレジストリキーをプログラムによって編集するにはどうすればよいですか?
- 6. 他のプラグインを編集する
- 7. Laravelユーザー編集
- 8. レジストリキーを編集するための管理者アカウントを偽装する(C#)
- 9. 他のユーザーが編集している場合にページ/エンティティを編集します
- 10. php - ユーザーのプロフィールページを編集する
- 11. Wordpressのテーマを他のユーザーが編集できるようにする
- 12. ユーザー編集プロフィールのトラブル
- 13. PassportJS:ユーザー情報の編集
- 14. 複数のユーザー編集エディタ
- 15. 他の行を編集せずにテキストファイルを編集する方法(cmd)
- 16. Wordpressのユーザーの役割は、他のユーザーの役割を持つユーザーのみ編集できますか?
- 17. MVC3ユーザー名を編集する(
- 18. ADユーザー属性を編集するLastKnownParent
- 19. Vimの/他のエディタの一括編集
- 20. OrcaでMSIを編集してインストール時にレジストリキーを追加する
- 21. Parse Server - 特定のユーザーが他のユーザーのデータを編集することはできますか?
- 22. Wordpress、ホームページの編集を編集する
- 23. WPユーザーのカスタムフィールドの更新を編集
- 24. SharePoint - Excel Online - Excelで編集し、複数のユーザーで編集する
- 25. Laravel - role_nameで役割のユーザーを編集
- 26. 管理者ユーザーが他のユーザーを削除および編集することを許可します
- 27. 管理者は他のユーザーのカスタム投稿タイプを編集できません
- 28. APEXのエンド・ユーザー編集ページの作成
- 29. ルビーオンレールの通知ユーザーの編集
- 30. Magentoのバックエンドのエラー:[編集]ユーザー
ありがとうございますが、動作しませんでした。それは、偽装されたユーザーではなく、現在のユーザーのレジストリを変更しました。 –
偽装が成立したことは確かですか?あなたは現在のユーザーIDを試して印刷し、本当に誰であるかを見ることができます。また、このASP.NETアプリケーションまたはWindowsアプリケーションもありますか? Webアプリケーションの場合は、偽装を許可する必要があります。 –
いいえ、WPFアプリです。 using(ImpersonatedUser = new ImpersonatedUser( "aaa"、Environment.MachineName、 "1")) { Registry.CurrentUser。CreateSubKey( "TMP10"); Registry.CurrentUser.Flush(); } これは現在のユーザーにキーを作成しましたが、 'aaa'にはありません:( –