1

特定の USB ディスクを有効または無効にしたいのですが、次の方法を見つけました。

 public static bool StateChange(bool Enable, int SelectedItem, IntPtr DevInfo)
        {
            bool result = false;
            SP_DEVINFO_DATA devInfoData = new SP_DEVINFO_DATA(); ;
            devInfoData.cbSize = Marshal.SizeOf(typeof(SP_DEVINFO_DATA));
            if (true == SetupDiEnumDeviceInfo(DevInfo, SelectedItem, devInfoData))
            {
                SP_PROPCHANGE_PARAMS pcp = new SP_PROPCHANGE_PARAMS(); ;
                pcp.ClassInstallHeader.cbSize = Marshal.SizeOf(typeof(SP_CLASSINSTALL_HEADER));
                pcp.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
                pcp.Scope = DICS_FLAG_GLOBAL;

                pcp.StateChange = (Enable ? DICS_ENABLE : DICS_DISABLE);
                if (true == SetupDiSetClassInstallParams(DevInfo, devInfoData, pcp, Marshal.SizeOf(pcp)))
                {
                    if (true == SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, DevInfo, devInfoData))
                    {
                        result = true;
                    }
                }
            }
            return result;
        }

しかし、呼び出すと失敗します: SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, DevInfo, devInfoData) (false を返します)

Windows 7 x64 を実行しているからですか?

4

1 に答える 1

1

MSDNによると、..「特定の DIF 要求では、発信者は管理者グループのメンバーである必要があります」。資格情報をテストしましたか?

于 2012-05-28T15:43:12.710 に答える