я добавляю эту функцию так, чтобы я видел использование диска легко:
function df {
$colItems = Get-wmiObject -class "Win32_LogicalDisk" -namespace "root\CIMV2" `
-computername localhost
foreach ($objItem in $colItems) {
write $objItem.DeviceID $objItem.Description $objItem.FileSystem `
($objItem.Size / 1GB).ToString("f3") ($objItem.FreeSpace / 1GB).ToString("f3")
}
}
Вам не нужно владеть EXE на использование SXS, SXS является еще одним словом для контекста активации . Если вы сможете импортировать соответствующие звонки Win32 на VBA (и вы можете), вы можете использовать API API активации для загрузки файла манифеста.
Подробнее на эту тему и некоторые примеры можно найти здесь .
Библиотеки C # не являются обычными библиотеками DLL. Они больше похожи на библиотеки COM, которые необходимо зарегистрировать (как элементы управления ActiveX) перед использованием; особенно при вызове из кода, отличного от .NET.
(Если, конечно, ничего не изменилось ...)
Проблема в том, что для использования SxS вам необходимо иметь исполняемый файл, чтобы настроить конфигурацию для загрузки сборки SxS. Вы не являетесь «владельцем» Access, и хотя вы могли бы добавить правильную конфигурацию, чтобы заставить ее загружать ваш .NET COM-материал без регистрации, это не было бы «хорошим гражданином».
Если у вас возникнут сложности с использованием шимминга, вы можете настроить неуправляемую DLL (или взломанную библиотеку классов C # с dllexport, см., Например, this ) с экспортом, который загрузит платформу .NET. , создайте экземпляр управляемого типа COMVisible DispInterface и верните его (метод должен возвращать IDispatch). Затем напишите объявление VBA в свою функцию экспорта DLL (объявленную как возвращающий объект). Если это не имеет смысла, вероятно, вам не стоит пробовать ... :) Я делал это раньше в похожей ситуации,