Определенные для пользователя настройки должны быть записаны в HKCU\Software, определенные для машины настройки к HKLM\Software. Под этими ключами структура [software vendor name]\[application name]
(например, HKLM\Software\Microsoft\Internet Explorer
) может быть наиболее распространена, но это - просто соглашение, не закон природы.
Многие (большинство?) приложения также добавляют свои записи удаления в HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\[app name]
, но снова, не все приложения делают это.
Это самые важные ключи; однако, содержание реестра не должно представлять установленное программное обеспечение точно - возможно, приложение было установлено однажды, но тогда было вручную удалено, или возможно деинсталлятор не удалил все трассировки его. Если Вы хотите быть уверенными, проверьте файловую систему, чтобы видеть, существует ли приложение все еще, где в его ключах реестра говорится, что это.
Редактирование:
, Если Вы - член администраторов группы, можно проверить HKEY_USERS
улей - HKCU каждого пользователя на самом деле находится там (необходимо будет знать пользовательский SID или пройти всех их).
Примечание: Как @Brian Ensink говорит, "установленный" определенное неопределенное понятие - мы пытаемся найти то, что мог выполнить пользователь? Некоторое программное обеспечение даже не пишет в Реестр вообще: поиск "портативных приложений" для наблюдения приложений, которые были конкретно изменены для выполнения непосредственно из медиа (CD/USB) и не для отъезда любых трассировок на компьютере. Нам, вероятно, также придется просканировать диски, и сетевые диски и что-либо пользовательские загрузки и доступные для мира доли Windows в Интернете (да, такие вещи существуют законно - \\live.sysinternals.com\tools
, приходит на ум). В этом направлении нет никакого реального предела того, что пользователь может выполнить, если не предотвращено системными политиками.
Вы можете добавить числа к легенде.
library(ggplot2)
critters <- structure(list(Zoo = "Omaha", Animals = 50, Bears = 10, PolarBears = 3), .Names = c("Zoo", "Animals", "Bears", "PolarBears"), row.names = c(NA, -1L), class = "data.frame")
d <- data.frame(animal=factor(c(rep("Animals", critters$Animals),
rep("Bears", critters$Bears), rep("PolarBears", critters$PolarBears)),
levels = c("PolarBears", "Bears", "Animals"), ordered= TRUE))
levels(d$animal) <- apply(data.frame(table(d$animal)), 1, paste, collapse = ": ")
ggplot(d, aes(x = factor(1), fill = factor(animal))) + geom_bar() +
coord_polar() + labs(x = NULL, fill = NULL) +
scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
opts(title = paste("Animals, Bears and Polar Bears:\nOmaha Zoo", sep=""))
, вы также можете добавить его прямо в сюжет:
grr <- ggplot(d, aes(x = factor(1), fill = factor(animal))) + geom_bar() +
coord_polar() + labs(x = NULL, fill = NULL) +
scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
opts(title = paste("Animals, Bears and Polar Bears:\nOmaha Zoo", sep=""))+
geom_text(y=c(3,10,50)-3,label=c("3","10","50"),size=4)
grr