Mir fallen spontan 3 mögliche Fehlerquellen ein:
- HIPS/
AV Software verbietet Zugriffe auf Registry Keys. Das reicht von einer hardcoded List über eine User supplied List bis hin zu diversen "Zonenmodellen" bei denen Software solange der Zugriff verwehrt wird, bis sie "approved" wurden durch den User. Kannst Du garantieren, daß eine
AV oder HIPS Software sich nicht vielleicht mal an einem deiner Namen stört und den Zugriff verweigert?
- Die Registry APIs haben recht lustige Bugs, die gerne mal von verschiedenen Kopierschutzsystemen genutzt werden. Z.B. eingestreute 0 Bytes. Ausserdem neigen bestimmte Sprachversionen (Chinesisch, Russisch, etc.) bei Verwendung von Sonderzeichen (äöü²³ etc.) und den Registry
ANSI APIs fehlzuschlagen und ein ähnliches Verhalten zu zeigen, wie bei geänderten Rechten. Kannst Du garantieren, daß Du keine ausländischen User hast, die evtl. Windows Version mit nem Multi Byte Zeichensatz fahren? Kannst Du garantieren, daß Deine User z.B. keine OODEFRAG Produkte einsetzen, die nicht ansprechbare Registry Keys mit "embedded" 0 Bytes erstellen?
- User. User sind immer Fehlerquellen. Du glaubst nicht ernsthaft ich bin der einzige da draussen, der mit Registry Berechtigungen rumspielt, oder? Willst gar nicht wissen, wieviele "Tweakseiten" lustige Tweaks veröffentlichen, die darauf basieren am Ende Windows selbst auszusperren indem man lustig an den ACLs rumfummelt. Sowas wird Dir teilweise sogar offiziell von MS vorgeschlagen
. Das Problem beim "user proof software design" ist halt, daß man den User immer wieder unterschätzt
.
Mir ist es letztlich ja relativ gleich was Du machst und was nicht. Der Fehler existiert unter Vista. Ich hab Dir gesagt wie Du ihn reproduzieren kannst. Ich hab Dir gesagt, wie Du an eine Testversion für Vista kommst, so daß Du es nicht kaufen musst und trotzdem Deine Software unter Vista testen kannst innerhalb einer virtuellen Maschine. Die anderen haben Dir gesagt, was Du bei einem Neudesign deiner
Unit beachten solltest. Wenn Du Fehlermeldungen nicht magst, kannst Du sie weiterhin unterdrücken. Ich würde sie aber zumindest via OutputDebugInfo ausgeben, um sie im Zweifelsfalle z.B. mit DebugView von Sysinternals dann doch sehen zu können.
Ansonsten zieh ich mich dann auch aus dem Thread zurück. Meinen Bugreport haste ja.