問題タブ [bcdstore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - DelphiからBcdStoreにアクセスする
このコードフラグメントをDelphiに変換しようとしていますが、行き詰まりましたfor each objWBL in colObjects
。
私の部分的なq&d翻訳(注意、それを実行するには管理者でなければなりません):
EnumerateObjectsは次のように定義されます
DelphiでBcdObject配列をウォークオーバーする方法がわかりません。
c# - C#を使用してWindows7のブート構成データにアクセスする
c#を使用して、ブート構成データストアから現在実行中のWindowsのインストールの識別子GUIDにアクセスできる必要があります。次のコマンドラインから返すことができます。
私が抱えている問題は、c#でこのコマンドを直接実行しようとすると(プログラムが管理者として実行されている場合でも)、bcdeditが存在しないと言われることです。私が使用しているもの:
私が調査したもう1つのことは、WMIを使用することですが、これを行うために必要な唯一のリファレンスはhttp://msdn.microsoft.com/en-us/library/windows/desktop/aa362673(v=vs.85).aspxです。これはあまり役に立ちません。
最善の解決策は、bcdeditを使用する必要がなく、代わりにネイティブWMIクラスを使用できる場合です。C#を使用して現在のWindowsブートローダー識別子を見つけるにはどうすればよいですか?
wmic - wmic を使用して Bcd にアクセス中にエラーが発生しました
wmic を使用して BcdStore クラスの EnumerateObjects メソッドにアクセスしようとすると、エラーが発生します。
最初に GetSystemDisk メソッドを実行して、BcdStore にアクセスできることを確認しました (以下を参照)。これはうまくいきました。
__ _ __ _ _ __ _ __ _コマンドウィンドウの出力が始まります__ _ __ _ _ __ _ __ _ ___ _
C:>wmic /namespace:\root\wmi クラス BcdStore 呼び出し GetSystemDisk
実行中 (BcdStore)->GetSystemDisk()
メソッドの実行が成功しました。
出力パラメータ:
__PARAMETERS のインスタンス
{
};
__ _ __ _ _ __ _ __ _コマンド ウィンドウの出力が終了します__ _ __ _ _ __ _ __ _ ___ _
次に、EnumerateObjects メソッドを実行しましたが、失敗しました。以下を参照してください。さまざまなバージョンは、引数をメソッドに渡す方法のさまざまなバリエーションですが、これは機能しませんでした。
__ _ __ _ _ __ _ __ _コマンドウィンドウの出力が始まります__ _ __ _ _ __ _ __ _ ___ _
C:>wmic /namespace:\root\wmi クラス BcdStore 呼び出し EnumerateObjects 10200003
実行中 (BcdStore)->EnumerateObjects()
エラー:
説明 = 無効なメソッド パラメータ
C:>wmic /namespace:\root\wmi class BcdStore call EnumerateObjects Type=10200003
実行中 (BcdStore)->EnumerateObjects()
エラー:
説明 = 無効なメソッド パラメータ
C:>wmic /namespace:\root\wmi class BcdStore call EnumerateObjects Type="H10200003"
エラー:
説明 = タイプが一致しません。
C:>wmic /namespace:\root\wmi クラス BcdStore 呼び出し EnumerateObjects 0x10200003
エラー:
説明 = タイプが一致しません。
__ _ __ _ _ __ _ __ _コマンド ウィンドウの出力が終了します__ _ __ _ _ __ _ __ _ ___ _
どんな助けでも大歓迎です。
windows - WMI を使用して Windows 2012 Server で BCDStore 情報を読み取れない
次の関数を使用して、現在のブート構成で指定されたプロセッサの数を取得しています。この番号は、ロギングのみに使用されます。
以下の関数は、XP、Vista、7、2003、および 2008 で正常に動作します。ただし、Windows 2012 Server では失敗します。
Win2012 で実行しようとすると、text で例外objWBL.GetElement
が発生します。Google は、このエラー コードに関連する意味のあるものを見つけられませんでした :(EOleSysError
OLE error D0000225
スタック トレースは、VarDispInvoke によって呼び出される DispatchInvoke によって呼び出される System.Win.ComObj.DispatchInvokeError で例外がトリガーされることを示しています。
これはすべて XE2 を使用して再現されました。XE3 でこの問題を再現することはできますが、Delphi RTL がそれと関係があるとは思えません。
この動作の考えられる理由について誰か考えがありますか?
powershell - bcdedit、bcdstore、powershell
そのため、cmd プロンプトにいるかのように、powershell スクリプトで bcd コマンドを記述できます。たとえば、次のようになります。
ただし、これを行うスクリプトが必要です:
そうしないと、逆になります。
私がする必要があるのは、powershell で他のブートの識別子を見つけることですが、方法がわかりません。すべてのグーグル検索はこれを行うように言います:
しかし、一度ストアを使用すると、ストアを使用する方法がわかりません。これは少し複雑すぎるようです。もっと簡単な方法があるはずです...いいえ?
vbscript - WMI を使用して Windows BCD の DeviceElements を設定できません
VBScript を使用してプログラムで Windows 7 BCD ストアを作成しようとしています。ストア自体、BootMgr、および OS ローダーの構築は、各オブジェクトのほとんどの要素を設定するのと同様に、順調に進んでいるようです。問題が発生するのは、device 要素と osdevice 要素を設定するときです。動作するコードは次のとおりです。
私が問題を抱えているコードは次のとおりです。
win32_Volume から報告されたパーティションの DeviceId、古い boot.ini スタイルの ARC パス、「partition=」、および動作するように思われるその他の構文を含めるために、ステートメントの最後にパーティション パスのいくつかのバリエーションを試しました。 bcdeditで。
いくつかのメモ。最終的な目標は、同じ物理ディスク上の別のパーティションを使用することです。SetPartitionDeviceElement を使用するのが適切な方法であるとは確信していません (vhds の利益のためだけにあるようです)。代わりに、次を使用する場合:
device および osdevice 要素は適切に入力され、現在のブート パーティションを反映しているように見えますが、アクティブ パーティションをこの新しい BCD がオンになっているパーティションに変更して再起動すると、ありがたいことにエラーはありませんが、起動しません。この方法では特定のパーティションを指定できないため、驚くことではありません。bcdeditを使用して動作させることができます
と
ここで、%guid%は OS ローダーの GUID です。
これに関する有用な情報は、地面ではかなり薄いです。私は、BCD WMI プロバイダーのMSDN ページと、BCD の古い MS ワード ドキュメントに首を突っ込んできました。また、Visual BCD エディターがオブジェクトと要素の種類を分類するのに役立つこともわかりましたが、これには本当に行き詰まっています。誰?
c# - C# BCD WMI プロバイダーを使用して Windows をセーフブートする
C#のみを使用してWindowsにセーフブートする方法に関するソリューションを探して、Webを精査しました。Vista 以降では、セーフ ブートは BCD を使用して制御されます。もちろん、コマンドライン ツール "bcdedit" を使用できます。
しかし、私はこのアプローチを使用したくありません。だから私の質問は:
C# のみを使用してセーフ モードで再起動するにはどうすればよいですか?
私はすでにこの SO postを見てきました。これが私を始めさせました。しかし、私はまだこのパズルのピースが欠けています。
どんな助けでも大歓迎です。=)
BCD WMI プロバイダー リファレンスはほとんど役に立ちません。
windows - bcdedit を使用して UEFI ファームウェア ブート エントリを追加する
を使用して新しい UEFI ファームウェア ブート メニュー エントリ (NVRAM 内) を追加する方法bcdedit
。たとえば、次の手順を試しましたが、ブート エントリが追加されません。
これは新しいGUIDを返します(newguidと言います)
前もって感謝します。